File Coverage

blib/lib/DBIx/Class/ResultSourceProxy.pm
Criterion Covered Total %
statement 34 36 94.4
branch 1 2 50.0
condition n/a
subroutine 11 12 91.6
pod 0 6 0.0
total 46 56 82.1


line stmt bran cond sub pod time code
1             package # hide from PAUSE
2             DBIx::Class::ResultSourceProxy;
3              
4 379     379   3745 use strict;
  379         1223  
  379         11380  
5 379     379   2044 use warnings;
  379         1188  
  379         10126  
6              
7 379     379   2221 use base 'DBIx::Class';
  379         1151  
  379         39958  
8              
9 379     379   2883 use Scalar::Util 'blessed';
  379         1138  
  379         20887  
10 379     379   2804 use DBIx::Class::_Util 'quote_sub';
  379         1253  
  379         18731  
11 379     379   2741 use namespace::clean;
  379         1292  
  379         2764  
12              
13             __PACKAGE__->mk_group_accessors('inherited_ro_instance' => 'source_name');
14              
15 14967     14967 0 227120 sub get_inherited_ro_instance { shift->get_inherited(@_) }
16              
17             sub set_inherited_ro_instance {
18 326     326 0 18616 my $self = shift;
19              
20 326 50       2118 $self->throw_exception ("Cannot set @{[shift]} on an instance")
  0         0  
21             if blessed $self;
22              
23 326         1645 $self->set_inherited(@_);
24             }
25              
26              
27             sub add_columns {
28 14201     14201 0 980829 my ($class, @cols) = @_;
29 14201         277671 my $source = $class->result_source_instance;
30 14201         260912 $source->add_columns(@cols);
31 14201         30277 foreach my $c (grep { !ref } @cols) {
  90778         176016  
32             # If this is an augment definition get the real colname.
33 45408         9201736 $c =~ s/^\+//;
34              
35 45408         203501 $class->register_column($c => $source->column_info($c));
36             }
37             }
38              
39 4     4 0 418 sub add_column { shift->add_columns(@_) }
40              
41              
42             sub add_relationship {
43 29094     29094 0 83859 my ($class, $rel, @rest) = @_;
44 29094         631713 my $source = $class->result_source_instance;
45 29094         541030 $source->add_relationship($rel => @rest);
46 29086         95825 $class->register_relationship($rel => $source->relationship_info($rel));
47             }
48              
49              
50             # legacy resultset_class accessor, seems to be used by cdbi only
51 0     0 0   sub iterator_class { shift->result_source_instance->resultset_class(@_) }
52              
53             for my $method_to_proxy (qw/
54             source_info
55             result_class
56             resultset_class
57             resultset_attributes
58              
59             columns
60             has_column
61              
62             remove_column
63             remove_columns
64              
65             column_info
66             columns_info
67             column_info_from_storage
68              
69             set_primary_key
70             primary_columns
71             sequence
72              
73             add_unique_constraint
74             add_unique_constraints
75              
76             unique_constraints
77             unique_constraint_names
78             unique_constraint_columns
79              
80             relationships
81             relationship_info
82             has_relationship
83             /) {
84             quote_sub __PACKAGE__."::$method_to_proxy", sprintf( <<'EOC', $method_to_proxy );
85             DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and DBIx::Class::_Util::fail_on_internal_call;
86             shift->result_source_instance->%s (@_);
87             EOC
88              
89             }
90              
91             1;