/usr/local/CPAN/Mvalve/Mvalve/CLI/Mvalve/Create.pm
package Mvalve::CLI::Mvalve::Create;
use Moose;
use DBI;
extends 'MooseX::App::Cmd::Command';
with 'Mvalve::CLI::ConfigFromFile';
has 'connect_info' => (
is => 'rw',
isa => 'ArrayRef',
required => 1,
auto_deref => 1,
);
__PACKAGE__->meta->make_immutable;
no Moose;
sub run {
my $self = shift;
my $dbh = DBI->connect( $self->connect_info );
local $dbh->{AutoCommit} = 0;
local $dbh->{RaiseError} = 1;
eval {
$dbh->do(<<" EOSQL");
CREATE TABLE q_incoming (
destination VARCHAR(40) NOT NULL,
message BLOB NOT NULL
) ENGINE=QUEUE DEFAULT CHARSET=utf8;
EOSQL
$dbh->do(<<" EOSQL");
CREATE TABLE q_emerg (
destination VARCHAR(40) NOT NULL,
message BLOB NOT NULL
) ENGINE=QUEUE DEFAULT CHARSET=utf8;
EOSQL
$dbh->do(<<" EOSQL");
CREATE TABLE q_timed (
destination VARCHAR(40) NOT NULL,
ready BIGINT NOT NULL,
message BLOB NOT NULL
) ENGINE=QUEUE DEFAULT CHARSET=utf8;
EOSQL
$dbh->do(<<" EOSQL");
CREATE TABLE q_statslog (
action VARCHAR(40) NOT NULL,
destination VARCHAR(40) NOT NULL,
logged_on TIMESTAMP NOT NULL
) ENGINE=QUEUE DEFAULT CHARSET=utf8;
EOSQL
$dbh->commit();
};
if ($@) {
print STDERR "Failed to create tables: $@\n";
}
$dbh->disconnect;
}