Merge 'trunk' into 'sybase_mssql'
[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($rel, $f_class, ( ref($f_key) ?
29                                                           $f_key :
30                                                           lc($f_key) ), @rest);
31 }
32
33 sub get_inflated_column {
34   my ($class, $get, @rest) = @_;
35   return $class->next::method(lc($get), @rest);
36 }
37
38 sub store_inflated_column {
39   my ($class, $set, @rest) = @_;
40   return $class->next::method(lc($set), @rest);
41 }
42
43 sub set_inflated_column {
44   my ($class, $set, @rest) = @_;
45   return $class->next::method(lc($set), @rest);
46 }
47
48 sub get_column {
49   my ($class, $get, @rest) = @_;
50   return $class->next::method(lc($get), @rest);
51 }
52
53 sub set_column {
54   my ($class, $set, @rest) = @_;
55   return $class->next::method(lc($set), @rest);
56 }
57
58 sub store_column {
59   my ($class, $set, @rest) = @_;
60   return $class->next::method(lc($set), @rest);
61 }
62
63 sub find_column {
64   my ($class, $col) = @_;
65   return $class->next::method(lc($col));
66 }
67
68 # _build_query
69 #
70 # Build a query hash for find, et al. Overrides Retrieve::_build_query.
71
72 sub _build_query {
73   my ($self, $query) = @_;
74
75   my %new_query;
76   $new_query{lc $_} = $query->{$_} for keys %$query;
77
78   return \%new_query;
79 }
80
81 sub _deploy_accessor {
82   my($class, $name, $accessor) = @_;
83
84   return if $class->_has_custom_accessor($name);
85
86          $class->next::method(lc $name   => $accessor);
87   return $class->next::method($name      => $accessor);
88 }
89
90
91 sub new {
92   my ($class, $attrs, @rest) = @_;
93   my %att;
94   $att{lc $_} = $attrs->{$_} for keys %$attrs;
95   return $class->next::method(\%att, @rest);
96 }
97
98 1;