/usr/local/CPAN/Schema-RDBMS-AUS/Schema/RDBMS/AUS.pm
package Schema::RDBMS::AUS;
use 5.006;
use strict;
use warnings;
use DBI;
use DBIx::Transaction;
use DBIx::Migration::Directories::Base;
our $VERSION = '0.04';
our $SCHEMA_VERSION = '0.01';
our @optmap = (
['AUS_DB_DSN', 'DBI_DSN'],
['AUS_DB_USER', 'DBI_USER'],
['AUS_DB_PASS', 'DBI_PASS'],
);
sub sdbh {
my $class = shift;
my $dbh = $class->dbh(@_);
DBIx::Migration::Directories::Base->new(dbh=>$dbh)->require_schema(
'Schema-RDBMS-AUS' => $VERSION
);
return $dbh;
}
sub db_opts {
my($class, @db_opts) = @_;
$db_opts[$_->[0]] = $ENV{$_->[1]}
foreach(
grep { defined $_->[1] }
map { [ $_, (grep { defined $ENV{$_} } @{$optmap[$_]})[0] ] }
grep { !defined $db_opts[$_] }
($[ .. $#optmap)
);
$db_opts[3] = {
RaiseError => 1, PrintError => 0, PrintWarn => 0, AutoCommit => 1
} unless defined $db_opts[3];
return(@db_opts);
}
sub dbh {
my($class, @db_opts) = @_;
@db_opts = $class->db_opts(@db_opts);
my $dbh = DBIx::Transaction->connect_cached(@db_opts)
or die "Database connection @db_opts[0,1] failed: ", DBI->errstr;
return $dbh;
}
1;