missed adding the test
[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/;
cda04c3a 7
3e110410 8use DBIx::Class::ResultSource::Table;
9
10__PACKAGE__->mk_classdata(table_class => 'DBIx::Class::ResultSource::Table');
cda04c3a 11
24d67825 12__PACKAGE__->mk_classdata('table_alias'); # FIXME: Doesn't actually do
75d07914 13 # anything yet!
cda04c3a 14
75d07914 15=head1 NAME
cda04c3a 16
24d67825 17DBIx::Class::ResultSourceProxy::Table - provides a classdata table
18object and method proxies
cda04c3a 19
20=head1 SYNOPSIS
21
24d67825 22 __PACKAGE__->table('cd');
23 __PACKAGE__->add_columns(qw/cdid artist title year/);
24 __PACKAGE__->set_primary_key('cdid');
cda04c3a 25
26=head1 METHODS
27
cda04c3a 28=head2 add_columns
29
24d67825 30 __PACKAGE__->add_columns(qw/cdid artist title year/);
cda04c3a 31
32Adds columns to the current class and creates accessors for them.
33
34=cut
35
cda04c3a 36=head2 table
37
38 __PACKAGE__->table('tbl_name');
39
40Gets or sets the table name.
41
42=cut
43
44sub table {
45 my ($class, $table) = @_;
b98e75f6 46 return $class->result_source_instance->name unless $table;
cda04c3a 47 unless (ref $table) {
5a879106 48 $table = $class->table_class->new({
24d67825 49 $class->can('result_source_instance') ?
75d07914 50 %{$class->result_source_instance} : (),
cda04c3a 51 name => $table,
52 result_class => $class,
b1fb2c94 53 source_name => undef,
5a879106 54 });
cda04c3a 55 }
e87bedbe 56
57 $class->mk_classdata('result_source_instance')
58 unless $class->can('result_source_instance');
59
60 $class->result_source_instance($table);
61
7fb16f1a 62 if ($class->can('schema_instance')) {
63 $class =~ m/([^:]+)$/;
64 $class->schema_instance->register_class($class, $class);
65 }
cda04c3a 66}
67
988bf309 68=head2 has_column
69
70 if ($obj->has_column($col)) { ... }
71
72Returns 1 if the class has a column of this name, 0 otherwise.
73
74=cut
75
76=head2 column_info
77
78 my $info = $obj->column_info($col);
79
80Returns the column metadata hashref for a column. For a description of
81the various types of column data in this hashref, see
75d07914 82L<DBIx::Class::ResultSource/add_column>
988bf309 83
84=cut
cda04c3a 85
d7156e50 86=head2 columns
87
988bf309 88 my @column_names = $obj->columns;
89
90=cut
cda04c3a 91
cda04c3a 921;
93
94=head1 AUTHORS
95
96Matt S. Trout <mst@shadowcatsystems.co.uk>
97
98=head1 LICENSE
99
100You may distribute this code under the same terms as Perl itself.
101
102=cut
103