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