X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FCDBICompat%2FTempColumns.pm;h=f5b60d47d04851d0c3b76f055447276682236636;hb=93b7182b41791a8253cef12f02805eaab05df91d;hp=d025bb8bf2622c540b2e7897d3230f334ababf33;hpb=e60dc79fcd4d6318e83584b826526e65048b86a9;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/CDBICompat/TempColumns.pm b/lib/DBIx/Class/CDBICompat/TempColumns.pm index d025bb8..f5b60d4 100644 --- a/lib/DBIx/Class/CDBICompat/TempColumns.pm +++ b/lib/DBIx/Class/CDBICompat/TempColumns.pm @@ -3,21 +3,31 @@ package # hide from PAUSE use strict; use warnings; -use base qw/DBIx::Class/; +use base qw/Class::Data::Inheritable/; + +use Carp; __PACKAGE__->mk_classdata('_temp_columns' => { }); sub _add_column_group { my ($class, $group, @cols) = @_; - if ($group eq 'TEMP') { - $class->_register_column_group($group => @cols); - $class->mk_group_accessors('temp' => @cols); - my %tmp = %{$class->_temp_columns}; - $tmp{$_} = 1 for @cols; - $class->_temp_columns(\%tmp); - } else { - return $class->next::method($group, @cols); + + return $class->next::method($group, @cols) unless $group eq 'TEMP'; + + my %new_cols = map { $_ => 1 } @cols; + my %tmp_cols = %{$class->_temp_columns}; + + for my $existing_col ( grep $new_cols{$_}, $class->columns ) { + # Already been declared TEMP + next if $tmp_cols{$existing_col}; + + carp "Declaring column $existing_col as TEMP but it already exists"; } + + $class->_register_column_group($group => @cols); + $class->mk_group_accessors('temp' => @cols); + + $class->_temp_columns({ %tmp_cols, %new_cols }); } sub new {