__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
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
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
sub has_column {
my ($self, $column) = @_;
- return $self->table_instance->has_column($column);
+ return $self->result_source->has_column($column);
}
=head2 column_info
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;