Coat-Persistent
view release on metacpan or search on metacpan
lib/Coat/Persistent.pm view on Meta::CPAN
# Returns a constant describing if the object exists or not
# already in the underlying DB
sub _db_state {
my ($self) = @_;
return $self->{_db_state} ||= CP_ENTRY_NEW;
}
# DBIx::Sequence needs two tables in the schema,
# this private function create them if needed.
sub _create_dbix_sequence_tables($) {
my ($dbh) = @_;
# dbix_sequence_state exists ?
unless (_table_exists($dbh, 'dbix_sequence_state')) {
# nope, create!
$dbh->do("CREATE TABLE dbix_sequence_state (dataset varchar(50), state_id int(11))")
or confess "Unable to create table dbix_sequence_state $DBI::errstr";
}
# dbix_sequence_release exists ?
unless (_table_exists($dbh, 'dbix_sequence_release')) {
# nope, create!
$dbh->do("CREATE TABLE dbix_sequence_release (dataset varchar(50), released_id int(11))")
or confess "Unable to create table dbix_sequence_release $DBI::errstr";
}
}
# This is the best way I found to check if a table exists, with a portable SQL
# If you have better, tell me!
sub _table_exists($$) {
my ($dbh, $table) = @_;
my $sth = $dbh->prepare("select count(*) from $table");
return 0 unless defined $sth;
$sth->execute or return 0;
my $nb_rows = $sth->fetchrow_hashref;
return defined $nb_rows;
}
1;
__END__
( run in 0.986 second using v1.01-cache-2.11-cpan-65fba6d93b7 )