Now passing four more tests, has_a and has_many compliance extended
[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);
20 $class->delete_accessor($col);
21 $class->mk_group_accessors('has_a' => $col);
22 return 1;
23}
24
b8e1e21f 25sub has_many {
26 my ($class, $rel, $f_class, $f_key, @rest) = @_;
27 return $class->NEXT::ACTUAL::has_many($rel, $f_class, lc($f_key), @rest);
28}
29
12bbb339 30sub get_has_a {
31 my ($class, $get, @rest) = @_;
32 return $class->NEXT::ACTUAL::get_has_a(lc($get), @rest);
33}
34
35sub store_has_a {
36 my ($class, $set, @rest) = @_;
37 return $class->NEXT::ACTUAL::store_has_a(lc($set), @rest);
38}
39
40sub set_has_a {
41 my ($class, $set, @rest) = @_;
42 return $class->NEXT::ACTUAL::set_has_a(lc($set), @rest);
ea2e61bf 43}
44
510ca912 45sub get_column {
ea2e61bf 46 my ($class, $get, @rest) = @_;
12bbb339 47 return $class->NEXT::ACTUAL::get_column(lc($get), @rest);
ea2e61bf 48}
49
510ca912 50sub set_column {
ea2e61bf 51 my ($class, $set, @rest) = @_;
12bbb339 52 return $class->NEXT::ACTUAL::set_column(lc($set), @rest);
510ca912 53}
54
55sub store_column {
56 my ($class, $set, @rest) = @_;
12bbb339 57 return $class->NEXT::ACTUAL::store_column(lc($set), @rest);
ea2e61bf 58}
59
60sub find_column {
61 my ($class, $col) = @_;
12bbb339 62 return $class->NEXT::ACTUAL::find_column(lc($col));
ea2e61bf 63}
64
510ca912 65sub _mk_group_accessors {
66 my ($class, $type, $group, @fields) = @_;
b8e1e21f 67 #warn join(', ', map { ref $_ ? (@$_) : ($_) } @fields);
68 my @extra;
69 foreach (@fields) {
70 my ($acc, $field) = ref $_ ? @$_ : ($_, $_);
71 next if defined &{"${class}::${acc}"};
72 push(@extra, [ lc $acc => $field ]);
73 }
74 return $class->NEXT::ACTUAL::_mk_group_accessors($type, $group,
75 @fields, @extra);
12bbb339 76}
77
78sub _cond_key {
79 my ($class, $attrs, $key, @rest) = @_;
80 return $class->NEXT::ACTUAL::_cond_key($attrs, lc($key), @rest);
81}
82
83sub _cond_value {
84 my ($class, $attrs, $key, @rest) = @_;
85 return $class->NEXT::ACTUAL::_cond_value($attrs, lc($key), @rest);
86}
87
88sub new {
89 my ($class, $attrs, @rest) = @_;
90 my %att;
91 $att{lc $_} = $attrs->{$_} for keys %$attrs;
92 return $class->NEXT::ACTUAL::new(\%att, @rest);
ea2e61bf 93}
94
951;