X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCDBICompat%2FColumnGroups.pm;h=911fe2a3b2d79407c3ac5fa41a6c25d5434347ed;hb=b327f988cff4cab5fa1a7a49cb60ed33ad0ef98f;hp=3bea78de3d225fd78bdad2ca8ac16b2ce65d930f;hpb=ea2e61bf5bb7187dc5e56513cd66c272d71d5074;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm index 3bea78d..911fe2a 100644 --- a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm +++ b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm @@ -1,69 +1,65 @@ -package DBIx::Class::CDBICompat::ColumnGroups; +package # hide from PAUSE + DBIx::Class::CDBICompat::ColumnGroups; use strict; use warnings; -use NEXT; -use base qw/Class::Data::Inheritable/; +use base qw/DBIx::Class::Row/; __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->add_columns(@cols); $class->_register_column_group($group => @cols); - $class->_register_columns(@cols); - $class->_mk_column_accessors(@cols); } sub _register_column_group { my ($class, $group, @cols) = @_; - if ($group eq 'Primary') { - my %pri; - $pri{$_} = {} for @cols; - $class->_primaries(\%pri); - } 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'}) { $groups->{'Essential'}{$cols[0]} = {}; } } $groups->{$group}{$_} ||= {} for @cols; + $class->_column_groups($groups); } -sub all_columns { return keys %{$_[0]->_columns}; } +sub all_columns { return shift->result_source_instance->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 {