Antispam-Toolkit
view release on metacpan or search on metacpan
lib/Antispam/Toolkit/Role/BerkeleyDB.pm view on Meta::CPAN
package Antispam::Toolkit::Role::BerkeleyDB;
BEGIN {
$Antispam::Toolkit::Role::BerkeleyDB::VERSION = '0.08';
}
use strict;
use warnings;
use autodie;
use namespace::autoclean;
use Antispam::Toolkit::Types qw( Bool File NonEmptyStr DataFile );
use BerkeleyDB;
use DateTime;
BEGIN {
die 'The ' . __PACKAGE__ . ' role requires a BerkeleyDB linked against Berkeley DB 4.4+'
unless $BerkeleyDB::db_version >= 4.4;
}
use Moose::Role;
use MooseX::Params::Validate qw( validated_list );
with 'Antispam::Toolkit::Role::Database';
has database => (
is => 'ro',
isa => File,
coerce => 1,
required => 1,
);
has name => (
is => 'ro',
isa => NonEmptyStr,
lazy => 1,
builder => '_build_name',
);
has _db => (
is => 'ro',
isa => 'BerkeleyDB::Hash',
init_arg => undef,
lazy => 1,
builder => '_build_db',
);
sub _build_db {
my $self = shift;
die "The database file must already exist"
unless -f $self->database();
my $env = BerkeleyDB::Env->new(
-Home => $self->database()->dir(),
-Flags => DB_INIT_CDB | DB_INIT_MPOOL,
);
return BerkeleyDB::Hash->new(
-Filename => $self->database(),
-Env => $env,
);
}
sub _build_name {
my $self = shift;
my $db_file = $self->database();
return
( run in 2.417 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )