X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FTableInstance.pm;h=4cb8d7f9711872cbadc17eeb013ba7e8b1bdedac;hb=8452e496;hp=e23700905ee0156539d5bdafe62a65c7a38e6254;hpb=6aeb91850d436202eecee51d6c51c8e548961105;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/TableInstance.pm b/lib/DBIx/Class/TableInstance.pm index e237009..4cb8d7f 100644 --- a/lib/DBIx/Class/TableInstance.pm +++ b/lib/DBIx/Class/TableInstance.pm @@ -10,9 +10,9 @@ __PACKAGE__->mk_classdata('table_alias'); # FIXME: Doesn't actually do anything __PACKAGE__->mk_classdata('table_class' => 'DBIx::Class::Table'); -sub iterator_class { shift->table_instance->resultset_class(@_) } -sub resultset_class { shift->table_instance->resultset_class(@_) } -sub _table_name { shift->table_instance->name } +sub iterator_class { shift->result_source->resultset_class(@_) } +sub resultset_class { shift->result_source->resultset_class(@_) } +sub _table_name { shift->result_source->name } =head1 NAME @@ -43,12 +43,12 @@ Adds columns to the current class and creates accessors for them. sub add_columns { my ($class, @cols) = @_; - $class->table_instance->add_columns(@cols); + $class->result_source->add_columns(@cols); $class->_mk_column_accessors(@cols); } sub _select_columns { - return shift->table_instance->columns; + return shift->result_source->columns; } =head2 table @@ -61,34 +61,22 @@ Gets or sets the table name. sub table { my ($class, $table) = @_; - return $class->table_instance->name unless $table; + return $class->result_source->name unless $table; unless (ref $table) { $table = $class->table_class->new( { name => $table, result_class => $class, }); - if ($class->can('table_instance')) { - $table->{_columns} = { %{$class->table_instance->{_columns}||{}} }; + if ($class->can('result_source')) { + $table->{_columns} = { %{$class->result_source->{_columns}||{}} }; } } - $class->mk_classdata('table_instance' => $table); -} - -=head2 find_or_create - - $class->find_or_create({ key => $val, ... }); - -Searches for a record matching the search condition; if it doesn't find one, -creates one and returns that instead. - -=cut - -sub find_or_create { - my $class = shift; - my $hash = ref $_[0] eq "HASH" ? shift: {@_}; - my $exists = $class->find($hash); - return defined($exists) ? $exists : $class->create($hash); + $class->mk_classdata('result_source' => $table); + if ($class->can('schema_instance')) { + $class =~ m/([^:]+)$/; + $class->schema_instance->register_class($class, $class); + } } =head2 has_column @@ -101,7 +89,7 @@ Returns 1 if the class has a column of this name, 0 otherwise. sub has_column { my ($self, $column) = @_; - return $self->table_instance->has_column($column); + return $self->result_source->has_column($column); } =head2 column_info @@ -114,22 +102,21 @@ Returns the column metadata hashref for a column. sub column_info { my ($self, $column) = @_; - return $self->table_instance->column_info($column); + return $self->result_source->column_info($column); } -=head2 columns - +=head2 columns + my @column_names = $obj->columns; =cut sub columns { - return shift->table_instance->columns(@_); + return shift->result_source->columns(@_); } -sub result_source { - return shift->table_instance(@_); -} +sub set_primary_key { shift->result_source->set_primary_key(@_); } +sub primary_columns { shift->result_source->primary_columns(@_); } 1;