Prevent invisible skipping of ResultSource proxy overrides
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / CDBICompat / ColumnCase.pm
1 package # hide from PAUSE
2     DBIx::Class::CDBICompat::ColumnCase;
3
4 use strict;
5 use warnings;
6
7 use base 'DBIx::Class';
8
9 sub _register_column_group {
10   my ($class, $group, @cols) = @_;
11   return $class->next::method($group => map lc, @cols);
12 }
13
14 sub add_columns :DBIC_method_is_bypassable_resultsource_proxy {
15   my ($class, @cols) = @_;
16   return $class->result_source->add_columns(map lc, @cols);
17 }
18
19 sub has_a {
20     my($self, $col, @rest) = @_;
21
22     $self->_declare_has_a(lc $col, @rest);
23     $self->_mk_inflated_column_accessor($col);
24
25     return 1;
26 }
27
28 sub has_many {
29   my ($class, $rel, $f_class, $f_key, @rest) = @_;
30   return $class->next::method(
31     $rel,
32     $f_class,
33     (ref($f_key) ?
34       $f_key :
35       lc($f_key||'')
36     ),
37     @rest
38   );
39 }
40
41 sub get_inflated_column {
42   my ($class, $get, @rest) = @_;
43   return $class->next::method(lc($get), @rest);
44 }
45
46 sub store_inflated_column {
47   my ($class, $set, @rest) = @_;
48   return $class->next::method(lc($set), @rest);
49 }
50
51 sub set_inflated_column {
52   my ($class, $set, @rest) = @_;
53   return $class->next::method(lc($set), @rest);
54 }
55
56 sub get_column {
57   my ($class, $get, @rest) = @_;
58   return $class->next::method(lc($get), @rest);
59 }
60
61 sub set_column {
62   my ($class, $set, @rest) = @_;
63   return $class->next::method(lc($set), @rest);
64 }
65
66 sub store_column {
67   my ($class, $set, @rest) = @_;
68   return $class->next::method(lc($set), @rest);
69 }
70
71 sub find_column {
72   my ($class, $col) = @_;
73   return $class->next::method(lc($col));
74 }
75
76 # _build_query
77 #
78 # Build a query hash for find, et al. Overrides Retrieve::_build_query.
79
80 sub _build_query {
81   my ($self, $query) = @_;
82
83   my %new_query;
84   $new_query{lc $_} = $query->{$_} for keys %$query;
85
86   return \%new_query;
87 }
88
89 sub _deploy_accessor {
90   my($class, $name, $accessor) = @_;
91
92   return if $class->_has_custom_accessor($name);
93
94          $class->next::method(lc $name   => $accessor);
95   return $class->next::method($name      => $accessor);
96 }
97
98
99 sub new {
100   my ($class, $attrs, @rest) = @_;
101   my %att;
102   $att{lc $_} = $attrs->{$_} for keys %$attrs;
103   return $class->next::method(\%att, @rest);
104 }
105
106 1;