Tweaked, prodded, refactored. Thanks to draven for the in_database bits
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / PK / Auto.pm
CommitLineData
b8e1e21f 1package DBIx::Class::PK::Auto;
2
3use strict;
4use warnings;
5
6sub insert {
7 my ($self, @rest) = @_;
8 my $ret = $self->NEXT::ACTUAL::insert(@rest);
9 my ($pri, $too_many) =
10 (grep { $self->_primaries->{$_}{'auto_increment'} }
11 keys %{ $self->_primaries })
12 || (keys %{ $self->_primaries });
13 die "More than one possible key found for auto-inc on ".ref $self
14 if $too_many;
15 unless (exists $self->{_column_data}{$pri}) {
16 die "Can't auto-inc for $pri on ".ref $self.": no _last_insert_id method"
17 unless $self->can('_last_insert_id');
18 my $id = $self->_last_insert_id;
19 die "Can't get last insert id" unless $id;
20 $self->store_column($pri => $id);
21 }
22 return $ret;
23}
24
251;