The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

package example::BookStore::PublisherIdGenerator;
use base qw(DBIx::Romani::IdGenerator);

use strict;

sub new
{
	my $class = shift;
	my $args  = shift;

	my $self = $class->SUPER::new($args);

	# grab the info that we get from the object.
	$self->{object}      = $args->{object};
	$self->{column_name} = $args->{column_name};
	$self->{table_name}  = $args->{table_name};

	return $self;
}

sub is_before_insert
{
	return 1;
}

sub is_after_insert
{
	return 0;
}

sub get_id_method
{
	die "max()";
}

sub get_id
{
	my $self = shift;
	my $conn = $self->get_conn();

	my $id;

	#$conn->execute_update("LOCK TABLE " . $self->{table_name});

	my $rs = $conn->execute_query( "SELECT MAX(" . $self->{column_name} . ") + 1 AS id FROM " . $self->{table_name} );

	if ( $rs->next() )
	{
		my $row = $rs->get_row();
		$id = $row->{id};
	}

	#$conn->execute_update("UNLOCK TABLE " . $self->{table_name});

	return $id;
}

1;