package Email::Archive::Storage::DBI;
use Moose;
+use Carp;
use DBI;
use File::ShareDir 'module_file';
use File::Slurp 'read_file';
use autodie;
with q/Email::Archive::Storage/;
-has dsn => (
- is => 'ro',
- isa => 'Str',
- required => 1,
-);
-
has sqla => (
is => 'ro',
isa => 'SQL::Abstract',
default => 0,
);
-my $SCHEMA_VERSION = 0;
+
+my $SCHEMA_VERSION = 1;
sub store {
my ($self, $email) = @_;
$self->do($sql);
}
-sub BUILD {
+sub _deployed {
my ($self) = @_;
- $self->dbh(DBI->connect($self->dsn));
+ my $schema_version = eval { $self->selectcol_array('SELECT schema_version FROM metadata') };
+ if(defined $schema_version and $schema_version =~ /^\d+$/) {
+ $self->deployed_schema_version($schema_version);
+ return $schema_version =~ /^\d+$/;
+ }
+}
+
+sub db_connect {
+ my ($self, $dsn) = @_;
+ $self->dbh(DBI->connect($dsn));
if(!$self->_deployed) {
$self->_deploy;
}
}
}
-sub _deployed {
- my ($self) = @_;
- my $schema_version = eval { $self->selectcol_array('SELECT schema_version FROM metadata') };
- if(defined $schema_version and $schema_version =~ /^\d+$/) {
- $self->deployed_schema_version($schema_version);
- return $schema_version =~ /^\d+$/;
- }
-}
-
1;