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