Added register_column API
[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
ec77fadc 13sub add_columns {
14 my ($class, @cols) = @_;
1f23a877 15 $class->mk_group_accessors(column => @cols);
8c49f629 16 $class->result_source_instance->add_columns(map lc, @cols);
ec77fadc 17}
18
12bbb339 19sub has_a {
20 my ($class, $col, @rest) = @_;
147dd158 21 $class->next::method(lc($col), @rest);
9f300b1b 22 $class->mk_group_accessors('inflated_column' => $col);
12bbb339 23 return 1;
24}
25
b8e1e21f 26sub has_many {
27 my ($class, $rel, $f_class, $f_key, @rest) = @_;
147dd158 28 return $class->next::method($rel, $f_class, ( ref($f_key) ?
be7fff92 29 $f_key :
30 lc($f_key) ), @rest);
b8e1e21f 31}
32
9f300b1b 33sub get_inflated_column {
12bbb339 34 my ($class, $get, @rest) = @_;
147dd158 35 return $class->next::method(lc($get), @rest);
12bbb339 36}
37
9f300b1b 38sub store_inflated_column {
12bbb339 39 my ($class, $set, @rest) = @_;
147dd158 40 return $class->next::method(lc($set), @rest);
12bbb339 41}
42
9f300b1b 43sub set_inflated_column {
12bbb339 44 my ($class, $set, @rest) = @_;
147dd158 45 return $class->next::method(lc($set), @rest);
ea2e61bf 46}
47
510ca912 48sub get_column {
ea2e61bf 49 my ($class, $get, @rest) = @_;
147dd158 50 return $class->next::method(lc($get), @rest);
ea2e61bf 51}
52
510ca912 53sub set_column {
ea2e61bf 54 my ($class, $set, @rest) = @_;
147dd158 55 return $class->next::method(lc($set), @rest);
510ca912 56}
57
58sub store_column {
59 my ($class, $set, @rest) = @_;
147dd158 60 return $class->next::method(lc($set), @rest);
ea2e61bf 61}
62
63sub find_column {
64 my ($class, $col) = @_;
147dd158 65 return $class->next::method(lc($col));
ea2e61bf 66}
67
510ca912 68sub _mk_group_accessors {
69 my ($class, $type, $group, @fields) = @_;
b8e1e21f 70 #warn join(', ', map { ref $_ ? (@$_) : ($_) } @fields);
71 my @extra;
72 foreach (@fields) {
73 my ($acc, $field) = ref $_ ? @$_ : ($_, $_);
c687b87e 74 #warn "$acc ".lc($acc)." $field";
b8e1e21f 75 next if defined &{"${class}::${acc}"};
76 push(@extra, [ lc $acc => $field ]);
77 }
147dd158 78 return $class->next::method($type, $group,
b8e1e21f 79 @fields, @extra);
12bbb339 80}
81
12bbb339 82sub new {
83 my ($class, $attrs, @rest) = @_;
84 my %att;
85 $att{lc $_} = $attrs->{$_} for keys %$attrs;
147dd158 86 return $class->next::method(\%att, @rest);
ea2e61bf 87}
88
891;