X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSource.pm;h=1be530e774a989e881004b67094077f67ab554c0;hb=096f421241;hp=689de7df23c8aa0487bbdc066bface89daaedee5;hpb=416e92f76193b3215745593cd066ff9a8e3ab1b8;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 689de7d..1be530e 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -12,10 +12,10 @@ __PACKAGE__->load_components(qw/AccessorGroup/); __PACKAGE__->mk_group_accessors('simple' => qw/_ordered_columns _columns _primaries _unique_constraints name resultset_attributes - schema from _relationships/); + schema from _relationships column_info_from_storage source_name/); __PACKAGE__->mk_group_accessors('component_class' => qw/resultset_class - result_class source_name/); + result_class/); =head1 NAME @@ -30,12 +30,25 @@ retrieved, most usually a table (see L) =head1 METHODS +=pod + +=head2 new + + $class->new(); + + $class->new({attribute_name => value}); + +Creates a new ResultSource object. Not normally called directly by end users. + =cut sub new { my ($class, $attrs) = @_; $class = ref $class if ref $class; - my $new = bless({ %{$attrs || {}}, _resultset => undef }, $class); + + my $new = { %{$attrs || {}}, _resultset => undef }; + bless $new, $class; + $new->{resultset_class} ||= 'DBIx::Class::ResultSet'; $new->{resultset_attributes} = { %{$new->{resultset_attributes} || {}} }; $new->{_ordered_columns} = [ @{$new->{_ordered_columns}||[]}]; @@ -43,6 +56,9 @@ sub new { $new->{_relationships} = { %{$new->{_relationships}||{}} }; $new->{name} ||= "!!NAME NOT SET!!"; $new->{_columns_info_loaded} ||= 0; + if(!defined $new->column_info_from_storage) { + $new->{column_info_from_storage} = 1 + } return $new; } @@ -171,6 +187,7 @@ sub column_info { unless exists $self->_columns->{$column}; #warn $self->{_columns_info_loaded}, "\n"; if ( ! $self->_columns->{$column}{data_type} + and $self->column_info_from_storage and ! $self->{_columns_info_loaded} and $self->schema and $self->storage ) { @@ -178,7 +195,7 @@ sub column_info { my $info; my $lc_info; # eval for the case of storage without table - eval { $info = $self->storage->columns_info_for( $self->from, keys %{$self->_columns} ) }; + eval { $info = $self->storage->columns_info_for( $self->from ) }; unless ($@) { for my $realcol ( keys %{$info} ) { $lc_info->{lc $realcol} = $info->{$realcol}; @@ -191,6 +208,17 @@ sub column_info { return $self->_columns->{$column}; } +=head2 column_info_from_storage + +Enables or disables the on-demand automatic loading of the above +column metadata from storage as neccesary. Defaults to true in the +current release, but will default to false in future releases starting +with 0.08000. This is *deprecated*, and should not be used. It will +be removed before 1.0. + + __PACKAGE__->column_info_from_storage(0); + __PACKAGE__->column_info_from_storage(1); + =head2 columns my @column_names = $obj->columns; @@ -234,7 +262,7 @@ sub remove_columns { } foreach (@cols) { - undef $columns->{$_}; + delete $columns->{$_}; }; $self->_ordered_columns(\@remaining);