X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCDBICompat%2FColumnGroups.pm;h=fc9ece35b2fbf270402ee5b9fd492d0cd1538bb3;hb=103647d504eeadac7d179057e9f4d5eda0cd7c1b;hp=1c328428e363702c4580cd1be72225d7eec85db0;hpb=8fe001e1f588a2a35923a74d262cd011466d31aa;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm index 1c32842..fc9ece3 100644 --- a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm +++ b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm @@ -8,47 +8,49 @@ use base qw/Class::Data::Inheritable/; __PACKAGE__->mk_classdata('_column_groups' => { }); -sub table { - shift->_table_name(@_); -} - sub columns { my $proto = shift; my $class = ref $proto || $proto; my $group = shift || "All"; - $class->_set_column_group($group => @_) if @_; + $class->_add_column_group($group => @_) if @_; return $class->all_columns if $group eq "All"; return $class->primary_column if $group eq "Primary"; return keys %{$class->_column_groups->{$group}}; } -sub _set_column_group { +sub _add_column_group { my ($class, $group, @cols) = @_; $class->_register_column_group($group => @cols); - #$class->_register_columns(@cols); - #$class->_mk_column_accessors(@cols); - $class->set_columns(@cols); + $class->add_columns(@cols); } sub _register_column_group { my ($class, $group, @cols) = @_; - if ($group eq 'Primary') { - $class->set_primary(@cols); - } my $groups = { %{$class->_column_groups} }; + if ($group eq 'Primary') { + $class->set_primary_key(@cols); + $groups->{'Essential'}{$_} ||= {} for @cols; + } + if ($group eq 'All') { - unless ($class->_column_groups->{'Primary'}) { + unless (exists $class->_column_groups->{'Primary'}) { $groups->{'Primary'}{$cols[0]} = {}; - $class->_primaries({ $cols[0] => {} }); + $class->set_primary_key($cols[0]); } - unless ($class->_column_groups->{'Essential'}) { + unless (exists $class->_column_groups->{'Essential'}) { + #$class->_register_column_group('Essential' => $cols[0]); $groups->{'Essential'}{$cols[0]} = {}; + #$groups->{'Essential'}{$_} ||= {} for keys %{ $class->_primaries || {} }; } } $groups->{$group}{$_} ||= {} for @cols; + #if ($group eq 'Essential') { + # $groups->{$group}{$_} ||= {} for keys %{ $class->_primaries || {} }; + #} + $class->_column_groups($groups); } @@ -56,13 +58,13 @@ sub all_columns { return keys %{$_[0]->_columns}; } sub primary_column { my ($class) = @_; - my @pri = keys %{$class->_primaries}; + my @pri = $class->primary_columns; return wantarray ? @pri : $pri[0]; } sub find_column { my ($class, $col) = @_; - return $col if $class->_columns->{$col}; + return $col if $class->has_column($col); } sub __grouper {