# $Id: db-common.pl 58 2006-05-04 00:04:10Z sky $ use strict; use File::Spec; sub db_filename { my($dbname) = @_; $dbname . '.db'; } sub setup_dbs { my($info) = @_; teardown_dbs(keys %$info); for my $dbname (keys %$info) { my $dbh = DBI->connect('dbi:SQLite:dbname=' . db_filename($dbname), '', '', { RaiseError => 1, PrintError => 0 }); for my $table (@{ $info->{$dbname} }) { $dbh->do( create_sql($table) ); } $dbh->disconnect; } } sub teardown_dbs { my(@dbs) = @_; for my $db (@dbs) { my $file = db_filename($db); next unless -e $file; unlink $file or die "Can't teardown $db: $!"; } } sub create_sql { my($table) = @_; my $file = File::Spec->catfile('t', 'schemas', $table . '.sql'); open my $fh, $file or die "Can't open $file: $!"; my $sql = do { local $/; <$fh> }; close $fh; $sql; } 1;