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