X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCDBICompat%2FColumnGroups.pm;h=f65a358066c6fc471d642c2ce87dd9a5f24d167b;hb=28ef9468343a356954f0e4dc6bba1b834a8b3c3c;hp=44a60107b7e0bf194488f06145d1fb2dc688cef0;hpb=1e0233457be7f60bc0a35a4913eecd7f7b7b15e8;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm index 44a6010..f65a358 100644 --- a/lib/DBIx/Class/CDBICompat/ColumnGroups.pm +++ b/lib/DBIx/Class/CDBICompat/ColumnGroups.pm @@ -3,14 +3,16 @@ package # hide from PAUSE use strict; use warnings; -use Sub::Name (); -use List::Util (); use base qw/DBIx::Class::Row/; +use List::Util (); +use DBIx::Class::_Util 'set_subname'; +use namespace::clean; + __PACKAGE__->mk_classdata('_column_groups' => { }); -sub columns { +sub columns :DBIC_method_is_bypassable_resultsource_proxy { my $proto = shift; my $class = ref $proto || $proto; my $group = shift || "All"; @@ -32,9 +34,9 @@ sub _add_column_group { $class->_register_column_group($group => @cols); } -sub add_columns { +sub add_columns :DBIC_method_is_bypassable_resultsource_proxy { my ($class, @cols) = @_; - $class->result_source_instance->add_columns(@cols); + $class->result_source->add_columns(@cols); } sub _register_column_group { @@ -96,7 +98,7 @@ sub _register_column_group { grep { $_ ne $class and - ($_->can($name)||0) == $existing_accessor + ( $Class::C3::MRO{$_} || {} )->{methods}{$name} } @{mro::get_linear_isa($class)} ) ) @@ -111,7 +113,7 @@ sub _register_column_group { no strict 'refs'; no warnings 'redefine'; my $fullname = join '::', $class, $name; - *$fullname = Sub::Name::subname $fullname, $accessor; + *$fullname = set_subname $fullname, $accessor; } $our_accessors{$accessor}++; @@ -137,20 +139,16 @@ sub _mk_group_accessors { ($name, $field) = @$field if ref $field; - my $accessor = $class->$maker($group, $field); - my $alias = "_${name}_accessor"; - - # warn " $field $alias\n"; - { - no strict 'refs'; - - $class->_deploy_accessor($name, $accessor); - $class->_deploy_accessor($alias, $accessor); + for( $name, "_${name}_accessor" ) { + $class->_deploy_accessor( + $_, + $class->$maker($group, $field, $_) + ); } } } -sub all_columns { return shift->result_source_instance->columns; } +sub all_columns { return shift->result_source->columns; } sub primary_column { my ($class) = @_;