use warnings;
use Tie::IxHash;
-use base qw/Class::Data::Inheritable/;
+use base qw/DBIx::Class::Row/;
__PACKAGE__->mk_classdata('_primaries' => {});
sub set_primary_key {
my ($class, @cols) = @_;
+ # check if primary key columns are valid columns
+ for (@cols) {
+ $class->throw( "Column $_ can't be used as primary key because it isn't defined in $class" )
+ unless $class->has_column($_);
+ }
my %pri;
tie %pri, 'Tie::IxHash', map { $_ => {} } @cols;
$class->_primaries(\%pri);
}
delete @{$self}{keys %$self};
@{$self}{keys %$reload} = values %$reload;
- #$self->store_column($_ => $reload->get_column($_))
- # foreach keys %{$self->_columns};
return $self;
}
sub _create_ID {
my ($class,%vals) = @_;
+ return undef unless 0 == grep { !defined } values %vals;
$class = ref $class || $class;
return join '|', $class, map { $_ . '=' . $vals{$_} } sort keys %vals;
}
+sub ident_condition {
+ my ($self) = @_;
+ my %cond;
+ $cond{$_} = $self->get_column($_) for $self->primary_columns;
+ return \%cond;
+}
+
1;
=back