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