X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;h=26bd6df729e3788ee54825d4344079e85447df0f;hb=0c11ad0ee5c8407f6b87d6e15c62a1b445076dc0;hp=e62dbc1fd2e1d7b006d17795c655897bfe407de8;hpb=843f8ecda2d9885b79402416f048016c1ecc4114;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK/Auto.pm b/lib/DBIx/Class/PK/Auto.pm index e62dbc1..26bd6df 100644 --- a/lib/DBIx/Class/PK/Auto.pm +++ b/lib/DBIx/Class/PK/Auto.pm @@ -5,35 +5,25 @@ use base qw/DBIx::Class/; use strict; use warnings; -=head1 NAME +1; + +=head1 NAME DBIx::Class::PK::Auto - Automatic primary key class =head1 SYNOPSIS - # In your table classes (replace PK::Auto::SQLite with your database) - __PACKAGE__->load_components(qw/PK::Auto::SQLite Core/); - __PACKAGE__->set_primary_key('id'); +use base 'DBIx::Class::Core'; +__PACKAGE__->set_primary_key('id'); =head1 DESCRIPTION This class overrides the insert method to get automatically incremented primary keys. -You don't want to be using this directly - instead load the appropriate one for -your database, e.g. C, in your table classes: - - __PACKAGE__->load_components(qw/PK::Auto::SQLite Core/); - -Note that C is specified as the leftmost argument. +PK::Auto is now part of Core. -Alternatively, you can load the components separately: - - __PACKAGE__->load_components(qw/Core/); - __PACKAGE__->load_components(qw/PK::Auto::SQLite/); - -This can be used, for example, if you have different databases and need to -determine the appropriate C class at runtime. +See L for details of component interactions. =head1 LOGIC @@ -44,50 +34,16 @@ fetching the assigned value afterwards. =head2 insert -Overrides C so that it will get the value of autoincremented primary -keys. - -=cut - -sub insert { - my ($self, @rest) = @_; - my $ret = $self->next::method(@rest); - - # if all primaries are already populated, skip auto-inc - my $populated = 0; - map { $populated++ if defined $self->get_column($_) } $self->primary_columns; - return $ret if ( $populated == scalar $self->primary_columns ); - - my ($pri, $too_many) = - (grep { $self->column_info($_)->{'auto_increment'} } - $self->primary_columns) - || $self->primary_columns; - $self->throw_exception( "More than one possible key found for auto-inc on ".ref $self ) - if $too_many; - unless (defined $self->get_column($pri)) { -# $self->throw_exception( "Can't auto-inc for $pri on ".ref $self.": no _last_insert_id method" ) -# unless $self->can('last_insert_id'); - my $id = $self->result_source->storage->last_insert_id($self->result_source); - $self->throw_exception( "Can't get last insert id" ) unless $id; - $self->store_column($pri => $id); - } - return $ret; -} +The code that was handled here is now in Row for efficiency. =head2 sequence -Manually define the correct sequence for your table, to avoid the overhead -associated with looking up the sequence automatically. - -=cut - -__PACKAGE__->mk_classdata('sequence'); - -1; +The code that was handled here is now in ResultSource, and is being proxied to +Row as well. -=head1 AUTHORS +=head1 AUTHOR AND CONTRIBUTORS -Matt S. Trout +See L and L in DBIx::Class =head1 LICENSE