X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK%2FAuto.pm;h=b4d509cb3d4e0131ba07647178b11e101426a14d;hb=3d56e0269f018071841218af861bfa07df6bf01b;hp=73abb33655cbef0e2c8bc5989f49900d90fbe710;hpb=9a15732eb45a540351080f22f519fbd54a9de12c;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK/Auto.pm b/lib/DBIx/Class/PK/Auto.pm index 73abb33..b4d509c 100644 --- a/lib/DBIx/Class/PK/Auto.pm +++ b/lib/DBIx/Class/PK/Auto.pm @@ -1,79 +1,55 @@ package DBIx::Class::PK::Auto; -use base qw/DBIx::Class::PK/; +#use base qw/DBIx::Class::PK/; +use base qw/DBIx::Class/; use strict; use warnings; -=head1 NAME - -DBIx::Class::PK::Auto - Automatic Primary Key class - -=head1 SYNOPSIS - -=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. PK::Auto::SQLite +1; -=head1 METHODS +__END__ -=over 4 +=head1 NAME -=item insert +DBIx::Class::PK::Auto - Automatic primary key class -Overrides insert so that it will get the value of autoincremented -primary keys. +=head1 SYNOPSIS -=cut +use base 'DBIx::Class::Core'; +__PACKAGE__->set_primary_key('id'); -sub insert { - my ($self, @rest) = @_; - my $ret = $self->next::method(@rest); +=head1 DESCRIPTION - # 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 ); +This class overrides the insert method to get automatically incremented primary +keys. - my ($pri, $too_many) = - (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)) { - $self->throw( "Can't auto-inc for $pri on ".ref $self.": no _last_insert_id method" ) - unless $self->can('last_insert_id'); - my $id = $self->last_insert_id; - $self->throw( "Can't get last insert id" ) unless $id; - $self->store_column($pri => $id); - } - return $ret; -} +PK::Auto is now part of Core. -=item sequence +See L for details of component interactions. -Manually define the correct sequence for your table, to avoid the overhead -associated with looking up the sequence automatically. +=head1 LOGIC -=cut +C does this by letting the database assign the primary key field and +fetching the assigned value afterwards. -__PACKAGE__->mk_classdata('sequence'); +=head1 METHODS -1; +=head2 insert -=back +The code that was handled here is now in Row for efficiency. -=head1 AUTHORS +=head2 sequence -Matt S. Trout +The code that was handled here is now in ResultSource, and is being proxied to +Row as well. -=head1 LICENSE +=head1 FURTHER QUESTIONS? -You may distribute this code under the same terms as Perl itself. +Check the list of L. -=cut +=head1 COPYRIGHT AND LICENSE +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L.