X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCDBICompat%2FColumnGroups.pm;h=3a026b222bd69f4faac807541832e0af1371b961;hb=a614f1d20e6e020bb7b58bc77f1c8efb9cf43a2b;hp=fa87ac1924c7112be6e484a15f978cd23be56c84;hpb=8da46543004ecb546d27b1cc40450d7160e8178f;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm index fa87ac1..3a026b2 100644 --- a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm +++ b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm @@ -3,7 +3,7 @@ package # hide from PAUSE use strict; use warnings; - +use Sub::Name (); use Storable 'dclone'; use base qw/DBIx::Class::Row/; @@ -24,10 +24,16 @@ sub columns { sub _add_column_group { my ($class, $group, @cols) = @_; + $class->mk_group_accessors(column => @cols); $class->add_columns(@cols); $class->_register_column_group($group => @cols); } +sub add_columns { + my ($class, @cols) = @_; + $class->result_source_instance->add_columns(@cols); +} + sub _register_column_group { my ($class, $group, @cols) = @_; @@ -67,7 +73,7 @@ sub _register_column_group { sub _has_custom_accessor { my($class, $name) = @_; - + no strict 'refs'; my $existing_accessor = *{$class .'::'. $name}{CODE}; return $existing_accessor && !$our_accessors{$existing_accessor}; @@ -81,9 +87,10 @@ sub _register_column_group { { no strict 'refs'; no warnings 'redefine'; - *{$class .'::'. $name} = $accessor; + my $fullname = join '::', $class, $name; + *$fullname = Sub::Name::subname $fullname, $accessor; } - + $our_accessors{$accessor}++; return 1; @@ -113,7 +120,7 @@ sub _mk_group_accessors { # warn " $field $alias\n"; { no strict 'refs'; - + $class->_deploy_accessor($name, $accessor); $class->_deploy_accessor($alias, $accessor); } @@ -148,7 +155,8 @@ sub _find_columns { return map { $class->find_column($_) } @col; } -package DBIx::Class::CDBICompat::ColumnGroups::GrouperShim; +package # hide from PAUSE (should be harmless, no POD no Version) + DBIx::Class::CDBICompat::ColumnGroups::GrouperShim; sub groups_for { my ($self, @cols) = @_; @@ -160,6 +168,5 @@ sub groups_for { } return keys %groups; } - 1;