X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FTableInstance.pm;h=6a44c8470534169b84256c10985fbf2cc7e1f1a1;hb=8c49f6295f3c7e07ba4bda6379f3c9f065501d7a;hp=634291f38a671e5e00df11f18e2f1d8e53eee70d;hpb=f6858c33d9bff4ee2e44c2cbbee9c68537adf11c;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/TableInstance.pm b/lib/DBIx/Class/TableInstance.pm index 634291f..6a44c84 100644 --- a/lib/DBIx/Class/TableInstance.pm +++ b/lib/DBIx/Class/TableInstance.pm @@ -3,18 +3,13 @@ package DBIx::Class::TableInstance; use strict; use warnings; -use base qw/DBIx::Class/; +use base qw/DBIx::Class::ResultSourceInstance/; use DBIx::Class::Table; __PACKAGE__->mk_classdata('table_alias'); # FIXME: Doesn't actually do anything yet! -__PACKAGE__->mk_classdata('_resultset_class' => 'DBIx::Class::ResultSet'); __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 } - =head1 NAME DBIx::Class::TableInstance - provides a classdata table object and method proxies @@ -42,16 +37,6 @@ Adds columns to the current class and creates accessors for them. =cut -sub add_columns { - my ($class, @cols) = @_; - $class->table_instance->add_columns(@cols); - $class->_mk_column_accessors(@cols); -} - -sub _select_columns { - return shift->table_instance->columns; -} - =head2 table __PACKAGE__->table('tbl_name'); @@ -62,35 +47,22 @@ Gets or sets the table name. sub table { my ($class, $table) = @_; - return $class->table_instance->name unless $table; + return $class->result_source_instance->name unless $table; unless (ref $table) { $table = $class->table_class->new( { name => $table, result_class => $class, - #storage => $class->storage, }); - if ($class->can('table_instance')) { - $table->{_columns} = { %{$class->table_instance->{_columns}||{}} }; + if ($class->can('result_source_instance')) { + $table->{_columns} = { %{$class->result_source_instance->{_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_instance' => $table); + if ($class->can('schema_instance')) { + $class =~ m/([^:]+)$/; + $class->schema_instance->register_class($class, $class); + } } =head2 has_column @@ -101,11 +73,6 @@ Returns 1 if the class has a column of this name, 0 otherwise. =cut -sub has_column { - my ($self, $column) = @_; - return $self->table_instance->has_column($column); -} - =head2 column_info my $info = $obj->column_info($col); @@ -114,21 +81,12 @@ Returns the column metadata hashref for a column. =cut -sub column_info { - my ($self, $column) = @_; - return $self->table_instance->column_info($column); -} +=head2 columns -=head2 columns - my @column_names = $obj->columns; =cut -sub columns { - return shift->table_instance->columns(@_); -} - 1; =head1 AUTHORS