1package # hide from PAUSE
2    DBIx::Class::ResultSourceProxy;
3
4use strict;
5use warnings;
6
7use base qw/DBIx::Class/;
8use Scalar::Util qw/blessed/;
9use Carp::Clan qw/^DBIx::Class/;
10
11sub iterator_class  { shift->result_source_instance->resultset_class(@_) }
12sub resultset_class { shift->result_source_instance->resultset_class(@_) }
13sub result_class { shift->result_source_instance->result_class(@_) }
14sub source_info { shift->result_source_instance->source_info(@_) }
15
16sub set_inherited_ro_instance {
17    my $self = shift;
18
19    croak "Cannot set @{[shift]} on an instance" if blessed $self;
20
21    return $self->set_inherited(@_);
22}
23
24sub get_inherited_ro_instance {
25    return shift->get_inherited(@_);
26}
27
28__PACKAGE__->mk_group_accessors('inherited_ro_instance' => 'source_name');
29
30
31sub resultset_attributes {
32  shift->result_source_instance->resultset_attributes(@_);
33}
34
35sub add_columns {
36  my ($class, @cols) = @_;
37  my $source = $class->result_source_instance;
38  $source->add_columns(@cols);
39  foreach my $c (grep { !ref } @cols) {
40    $class->register_column($c => $source->column_info($c));
41  }
42}
43
44sub add_column {
45  shift->add_columns(@_);
46}
47
48sub has_column {
49  shift->result_source_instance->has_column(@_);
50}
51
52sub column_info {
53  shift->result_source_instance->column_info(@_);
54}
55
56sub column_info_from_storage {
57  shift->result_source_instance->column_info_from_storage(@_);
58}
59
60sub columns {
61  shift->result_source_instance->columns(@_);
62}
63
64sub remove_columns {
65  shift->result_source_instance->remove_columns(@_);
66}
67
68*remove_column = \&remove_columns;
69
70sub set_primary_key {
71  shift->result_source_instance->set_primary_key(@_);
72}
73
74sub primary_columns {
75  shift->result_source_instance->primary_columns(@_);
76}
77
78sub _pri_cols {
79  shift->result_source_instance->_pri_cols(@_);
80}
81
82sub add_unique_constraint {
83  shift->result_source_instance->add_unique_constraint(@_);
84}
85
86sub unique_constraints {
87  shift->result_source_instance->unique_constraints(@_);
88}
89
90sub unique_constraint_names {
91  shift->result_source_instance->unique_constraint_names(@_);
92}
93
94sub unique_constraint_columns {
95  shift->result_source_instance->unique_constraint_columns(@_);
96}
97
98sub add_relationship {
99  my ($class, $rel, @rest) = @_;
100  my $source = $class->result_source_instance;
101  $source->add_relationship($rel => @rest);
102  $class->register_relationship($rel => $source->relationship_info($rel));
103}
104
105sub relationships {
106  shift->result_source_instance->relationships(@_);
107}
108
109sub relationship_info {
110  shift->result_source_instance->relationship_info(@_);
111}
112
1131;
114