fix ResultSourceProxy::Table for inherited classes (needs testing)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / ResultSourceProxy / Table.pm
CommitLineData
80c90f5d 1package DBIx::Class::ResultSourceProxy::Table;
cda04c3a 2
3use strict;
4use warnings;
5
80c90f5d 6use base qw/DBIx::Class::ResultSourceProxy/;
25bb283d 7use DBIx::Class::ResultSource::Table;
cda04c3a 8
9__PACKAGE__->mk_classdata('table_alias'); # FIXME: Doesn't actually do anything yet!
10
25bb283d 11__PACKAGE__->mk_classdata('table_class' => 'DBIx::Class::ResultSource::Table');
cda04c3a 12
cda04c3a 13=head1 NAME
14
80c90f5d 15DBIx::Class::ResultSourceProxy::Table - provides a classdata table object and method proxies
cda04c3a 16
17=head1 SYNOPSIS
18
19 __PACKAGE__->table('foo');
20 __PACKAGE__->add_columns(qw/id bar baz/);
21 __PACKAGE__->set_primary_key('id');
22
23=head1 METHODS
24
cda04c3a 25=head2 add_columns
26
27 __PACKAGE__->add_columns(qw/col1 col2 col3/);
28
29Adds columns to the current class and creates accessors for them.
30
31=cut
32
cda04c3a 33=head2 table
34
35 __PACKAGE__->table('tbl_name');
36
37Gets or sets the table name.
38
39=cut
40
41sub table {
42 my ($class, $table) = @_;
b98e75f6 43 return $class->result_source_instance->name unless $table;
cda04c3a 44 unless (ref $table) {
5a879106 45 $table = $class->table_class->new({
46 $class->can('result_source_instance') ? %{$class->result_source_instance} : (),
cda04c3a 47 name => $table,
48 result_class => $class,
5a879106 49 });
cda04c3a 50 }
b98e75f6 51 $class->mk_classdata('result_source_instance' => $table);
7fb16f1a 52 if ($class->can('schema_instance')) {
53 $class =~ m/([^:]+)$/;
54 $class->schema_instance->register_class($class, $class);
55 }
cda04c3a 56}
57
cda04c3a 58=head2 has_column
59
60 if ($obj->has_column($col)) { ... }
61
62Returns 1 if the class has a column of this name, 0 otherwise.
63
64=cut
65
cda04c3a 66=head2 column_info
67
68 my $info = $obj->column_info($col);
69
70Returns the column metadata hashref for a column.
71
72=cut
73
d7156e50 74=head2 columns
75
cda04c3a 76 my @column_names = $obj->columns;
77
78=cut
79
cda04c3a 801;
81
82=head1 AUTHORS
83
84Matt S. Trout <mst@shadowcatsystems.co.uk>
85
86=head1 LICENSE
87
88You may distribute this code under the same terms as Perl itself.
89
90=cut
91