1 package DBIx::Class::ResultSourceProxy::Table;
6 use base qw/DBIx::Class::ResultSourceProxy/;
8 use DBIx::Class::ResultSource::Table;
9 use Scalar::Util 'blessed';
12 # FIXME - both of these *PROBABLY* need to be 'inherited_ro_instance' type
13 __PACKAGE__->mk_classaccessor(table_class => 'DBIx::Class::ResultSource::Table');
14 # FIXME: Doesn't actually do anything yet!
15 __PACKAGE__->mk_group_accessors( inherited => 'table_alias' );
17 sub _init_result_source_instance {
20 $class->mk_group_accessors( inherited => [ result_source_instance => '_result_source' ] )
21 unless $class->can('result_source_instance');
23 # might be pre-made for us courtesy of DBIC::DB::result_source_instance()
24 my $rsrc = $class->result_source_instance;
27 if $rsrc and $rsrc->result_class eq $class;
29 my $table_class = $class->table_class;
30 $class->ensure_class_loaded($table_class);
34 # NOTE! - not using clone() here and *NOT* marking source as derived
35 # from the one already existing on the class (if any)
37 $rsrc = $table_class->new({
39 result_class => $class,
45 $rsrc = $table_class->new({
47 result_class => $class,
52 $class->result_source_instance($rsrc);
57 DBIx::Class::ResultSourceProxy::Table - provides a classdata table
58 object and method proxies
62 __PACKAGE__->table('cd');
63 __PACKAGE__->add_columns(qw/cdid artist title year/);
64 __PACKAGE__->set_primary_key('cdid');
70 __PACKAGE__->add_columns(qw/cdid artist title year/);
72 Adds columns to the current class and creates accessors for them.
78 __PACKAGE__->table('tbl_name');
80 Gets or sets the table name.
85 return $_[0]->result_source_instance->name unless @_ > 1;
87 my ($class, $table) = @_;
89 unless (blessed $table && $table->isa($class->table_class)) {
91 my $ancestor = $class->can('result_source_instance')
92 ? $class->result_source_instance
96 my $table_class = $class->table_class;
97 $class->ensure_class_loaded($table_class);
100 # NOTE! - not using clone() here and *NOT* marking source as derived
101 # from the one already existing on the class (if any)
102 # This is logically sound as we are operating at class-level, and is
103 # in fact necessary, as otherwise any base-class with a "dummy" table
104 # will be marked as an ancestor of everything
105 $table = $table_class->new({
106 %{ $ancestor || {} },
108 result_class => $class,
112 $class->mk_group_accessors( inherited => [ result_source_instance => '_result_source' ] )
113 unless $class->can('result_source_instance');
115 $class->result_source_instance($table)->name;
120 __PACKAGE__->table_class('DBIx::Class::ResultSource::Table');
122 Gets or sets the table class used for construction and validation.
126 if ($obj->has_column($col)) { ... }
128 Returns 1 if the class has a column of this name, 0 otherwise.
132 my $info = $obj->column_info($col);
134 Returns the column metadata hashref for a column. For a description of
135 the various types of column data in this hashref, see
136 L<DBIx::Class::ResultSource/add_column>
140 my @column_names = $obj->columns;
142 =head1 FURTHER QUESTIONS?
144 Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
146 =head1 COPYRIGHT AND LICENSE
148 This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
149 by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
150 redistribute it and/or modify it under the same terms as the
151 L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.