Rename variables/shuffle some code, preparing for next commits
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / ResultSourceProxy.pm
CommitLineData
75d07914 1package # hide from PAUSE
c0e7b4e5 2 DBIx::Class::ResultSourceProxy;
b98e75f6 3
4use strict;
5use warnings;
6
8d73fcd4 7use base 'DBIx::Class';
d009cb7d 8use mro 'c3';
8d73fcd4 9
e5053694 10use DBIx::Class::_Util qw( quote_sub fail_on_internal_call );
a93c65f2 11use namespace::clean;
b98e75f6 12
a93c65f2 13__PACKAGE__->mk_group_accessors('inherited_ro_instance' => 'source_name');
14
d46eac43 15sub get_inherited_ro_instance { $_[0]->get_inherited($_[1]) }
b98e75f6 16
93405cf0 17sub set_inherited_ro_instance {
d46eac43 18 $_[0]->throw_exception ("Cannot set '$_[1]' on an instance")
19 if length ref $_[0];
93405cf0 20
d46eac43 21 $_[0]->set_inherited( $_[1], $_[2] );
93405cf0 22}
23
5ac6a044 24
b98e75f6 25sub add_columns {
26 my ($class, @cols) = @_;
1f23a877 27 my $source = $class->result_source_instance;
28 $source->add_columns(@cols);
29 foreach my $c (grep { !ref } @cols) {
157ce0cf 30 # If this is an augment definition get the real colname.
31 $c =~ s/^\+//;
32
1f23a877 33 $class->register_column($c => $source->column_info($c));
34 }
b98e75f6 35}
36
e5053694 37sub add_column {
38 DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
39 shift->add_columns(@_)
40}
002a359a 41
002a359a 42
a93c65f2 43sub add_relationship {
44 my ($class, $rel, @rest) = @_;
45 my $source = $class->result_source_instance;
46 $source->add_relationship($rel => @rest);
47 $class->register_relationship($rel => $source->relationship_info($rel));
bc0c9800 48}
49
b98e75f6 50
a93c65f2 51# legacy resultset_class accessor, seems to be used by cdbi only
e5053694 52sub iterator_class {
53 DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
54 shift->result_source_instance->resultset_class(@_)
55}
a83cdbf2 56
a93c65f2 57for my $method_to_proxy (qw/
58 source_info
59 result_class
60 resultset_class
61 resultset_attributes
bc0c9800 62
a93c65f2 63 columns
64 has_column
034d0be4 65
a93c65f2 66 remove_column
67 remove_columns
87f0da6a 68
a93c65f2 69 column_info
52416317 70 columns_info
a93c65f2 71 column_info_from_storage
1bc0b925 72
a93c65f2 73 set_primary_key
74 primary_columns
89170201 75 sequence
1bc0b925 76
a93c65f2 77 add_unique_constraint
78 add_unique_constraints
8c49f629 79
a93c65f2 80 unique_constraints
81 unique_constraint_names
82 unique_constraint_columns
8c49f629 83
a93c65f2 84 relationships
85 relationship_info
86 has_relationship
87/) {
4006691d 88 quote_sub __PACKAGE__."::$method_to_proxy", sprintf( <<'EOC', $method_to_proxy );
89 DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and DBIx::Class::_Util::fail_on_internal_call;
90 shift->result_source_instance->%s (@_);
91EOC
92
8c49f629 93}
94
b98e75f6 951;