X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;h=d6dd3a517c9a06c0277008d9ba8208a5b379540b;hb=c8f4b52ba7e5e8a2e5a91655bfc058a54155dcc5;hp=84e679a70a590087a841ed94feef5bf868a5b7e0;hpb=0675cd04337cafdc5a8ce19e707e3b2ce2508087;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/PK/Auto.pm b/lib/DBIx/Class/PK/Auto.pm index 84e679a..d6dd3a5 100644 --- a/lib/DBIx/Class/PK/Auto.pm +++ b/lib/DBIx/Class/PK/Auto.pm @@ -1,6 +1,7 @@ package DBIx::Class::PK::Auto; -use base qw/Class::Data::Inheritable/; +#use base qw/DBIx::Class::PK/; +use base qw/DBIx::Class/; use strict; use warnings; @@ -18,11 +19,14 @@ incremented primary keys. You don't want to be using this directly - instead load the appropriate one for your database, e.g. PK::Auto::SQLite -=head1 METHODS +=head1 LOGIC + +PK::Auto does this by letting the database assign the primary key field +and fetching the assigned value afterwards. -=over 4 +=head1 METHODS -=item insert +=head2 insert Overrides insert so that it will get the value of autoincremented primary keys. @@ -31,17 +35,17 @@ primary keys. sub insert { my ($self, @rest) = @_; - my $ret = $self->NEXT::ACTUAL::insert(@rest); + my $ret = $self->next::method(@rest); # if all primaries are already populated, skip auto-inc my $populated = 0; - map { $populated++ if $self->$_ } keys %{ $self->_primaries }; - return $ret if ( $populated == scalar keys %{ $self->_primaries } ); + map { $populated++ if defined $self->get_column($_) } $self->primary_columns; + return $ret if ( $populated == scalar $self->primary_columns ); my ($pri, $too_many) = - (grep { $self->_primaries->{$_}{'auto_increment'} } - keys %{ $self->_primaries }) - || (keys %{ $self->_primaries }); + (grep { $self->column_info($_)->{'auto_increment'} } + $self->primary_columns) + || $self->primary_columns; $self->throw( "More than one possible key found for auto-inc on ".ref $self ) if $too_many; unless (defined $self->get_column($pri)) { @@ -54,7 +58,7 @@ sub insert { return $ret; } -=item sequence +=head2 sequence Manually define the correct sequence for your table, to avoid the overhead associated with looking up the sequence automatically. @@ -65,8 +69,6 @@ __PACKAGE__->mk_classdata('sequence'); 1; -=back - =head1 AUTHORS Matt S. Trout