X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSource.pm;h=54374f19c7e73e63119ee2710aa2427b45e7e1be;hb=90545b68b06c2d2d288d593462539fe45fff48a6;hp=dbbe1adfd8f1bacaca1cdc20799a008d168d537a;hpb=32be057ce33f8a211402ecfbd714bc2bea4c8d73;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index dbbe1ad..54374f1 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -4,19 +4,21 @@ use strict; use warnings; use DBIx::Class::ResultSet; +use DBIx::Class::ResultSourceHandle; use Carp::Clan qw/^DBIx::Class/; use Storable; use base qw/DBIx::Class/; -__PACKAGE__->load_components(qw/AccessorGroup/); __PACKAGE__->mk_group_accessors('simple' => qw/_ordered_columns _columns _primaries _unique_constraints name resultset_attributes - schema from _relationships column_info_from_storage source_name/); + schema from _relationships column_info_from_storage source_info/); -__PACKAGE__->mk_group_accessors('component_class' => qw/resultset_class +__PACKAGE__->mk_group_accessors('inherited' => qw/resultset_class result_class/); +__PACKAGE__->mk_group_ro_accessors('simple' => qw/source_name/); + =head1 NAME DBIx::Class::ResultSource - Result source object @@ -46,9 +48,7 @@ sub new { my ($class, $attrs) = @_; $class = ref $class if ref $class; - my $new = { %{$attrs || {}}, _resultset => undef }; - bless $new, $class; - + my $new = bless { %{$attrs || {}} }, $class; $new->{resultset_class} ||= 'DBIx::Class::ResultSet'; $new->{resultset_attributes} = { %{$new->{resultset_attributes} || {}} }; $new->{_ordered_columns} = [ @{$new->{_ordered_columns}||[]}]; @@ -56,14 +56,22 @@ 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; } =pod +=head2 source_info + +Stores a hashref of per-source metadata. No specific key names +have yet been standardized, the examples below are purely hypothetical +and don't actually accomplish anything on their own: + + __PACKAGE__->source_info({ + "_tablespace" => 'fast_disk_array_3', + "_engine" => 'InnoDB', + }); + =head2 add_columns $table->add_columns(qw/col1 col2 col3/); @@ -223,13 +231,10 @@ sub column_info { =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. +Enables the on-demand automatic loading of the above column +metadata from storage as neccesary. 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 @@ -965,12 +970,6 @@ sub resultset { 'call it on the schema instead.' ) if scalar @_; - # disabled until we can figure out a way to do it without consistency issues - # - #return $self->{_resultset} - # if ref $self->{_resultset} eq $self->resultset_class; - #return $self->{_resultset} = - return $self->resultset_class->new( $self, $self->{resultset_attributes} ); @@ -996,6 +995,20 @@ its class name. # from your schema... $schema->resultset('Books')->find(1); +=head2 handle + +Obtain a new handle to this source. Returns an instance of a +L. + +=cut + +sub handle { + return new DBIx::Class::ResultSourceHandle({ + schema => $_[0]->schema, + source_moniker => $_[0]->source_name + }); +} + =head2 throw_exception See L.