DB.pm now keeps a Schema Instance
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / CDBICompat / ColumnCase.pm
CommitLineData
ea2e61bf 1package DBIx::Class::CDBICompat::ColumnCase;
2
3use strict;
4use warnings;
75a23b3e 5
6use base qw/DBIx::Class/;
ea2e61bf 7
8sub _register_column_group {
9 my ($class, $group, @cols) = @_;
147dd158 10 return $class->next::method($group => map lc, @cols);
ea2e61bf 11}
12
13sub _register_columns {
14 my ($class, @cols) = @_;
147dd158 15 return $class->next::method(map lc, @cols);
12bbb339 16}
17
ec77fadc 18sub add_columns {
19 my ($class, @cols) = @_;
7fb16f1a 20 $class->result_source->add_columns(map lc, @cols);
ec77fadc 21 $class->_mk_column_accessors(@cols);
22}
23
12bbb339 24sub has_a {
25 my ($class, $col, @rest) = @_;
147dd158 26 $class->next::method(lc($col), @rest);
9f300b1b 27 $class->mk_group_accessors('inflated_column' => $col);
12bbb339 28 return 1;
29}
30
b8e1e21f 31sub has_many {
32 my ($class, $rel, $f_class, $f_key, @rest) = @_;
147dd158 33 return $class->next::method($rel, $f_class, ( ref($f_key) ?
be7fff92 34 $f_key :
35 lc($f_key) ), @rest);
b8e1e21f 36}
37
9f300b1b 38sub get_inflated_column {
12bbb339 39 my ($class, $get, @rest) = @_;
147dd158 40 return $class->next::method(lc($get), @rest);
12bbb339 41}
42
9f300b1b 43sub store_inflated_column {
12bbb339 44 my ($class, $set, @rest) = @_;
147dd158 45 return $class->next::method(lc($set), @rest);
12bbb339 46}
47
9f300b1b 48sub set_inflated_column {
12bbb339 49 my ($class, $set, @rest) = @_;
147dd158 50 return $class->next::method(lc($set), @rest);
ea2e61bf 51}
52
510ca912 53sub get_column {
ea2e61bf 54 my ($class, $get, @rest) = @_;
147dd158 55 return $class->next::method(lc($get), @rest);
ea2e61bf 56}
57
510ca912 58sub set_column {
ea2e61bf 59 my ($class, $set, @rest) = @_;
147dd158 60 return $class->next::method(lc($set), @rest);
510ca912 61}
62
63sub store_column {
64 my ($class, $set, @rest) = @_;
147dd158 65 return $class->next::method(lc($set), @rest);
ea2e61bf 66}
67
68sub find_column {
69 my ($class, $col) = @_;
147dd158 70 return $class->next::method(lc($col));
ea2e61bf 71}
72
510ca912 73sub _mk_group_accessors {
74 my ($class, $type, $group, @fields) = @_;
b8e1e21f 75 #warn join(', ', map { ref $_ ? (@$_) : ($_) } @fields);
76 my @extra;
77 foreach (@fields) {
78 my ($acc, $field) = ref $_ ? @$_ : ($_, $_);
c687b87e 79 #warn "$acc ".lc($acc)." $field";
b8e1e21f 80 next if defined &{"${class}::${acc}"};
81 push(@extra, [ lc $acc => $field ]);
82 }
147dd158 83 return $class->next::method($type, $group,
b8e1e21f 84 @fields, @extra);
12bbb339 85}
86
87sub _cond_key {
88 my ($class, $attrs, $key, @rest) = @_;
147dd158 89 return $class->next::method($attrs, lc($key), @rest);
12bbb339 90}
91
92sub _cond_value {
93 my ($class, $attrs, $key, @rest) = @_;
147dd158 94 return $class->next::method($attrs, lc($key), @rest);
12bbb339 95}
96
97sub new {
98 my ($class, $attrs, @rest) = @_;
99 my %att;
100 $att{lc $_} = $attrs->{$_} for keys %$attrs;
147dd158 101 return $class->next::method(\%att, @rest);
ea2e61bf 102}
103
1041;