NAME
Aniki::Handler - Database handler manager
SYNOPSIS
# define custom database handler class
pakcage MyApp::DB::Handler {
use Mouse;
extends qw/Aniki::Handler/;
has '+connect_info' => (
is => 'rw',
);
has servers => (
is => 'ro',
isa => 'ArrayRef[Str]',
);
sub _choice { @_[int rand scalar @_] }
around connect => sub {
my $self = shift;
my ($dsn, $user, $pass, $attr) = @{ $self->connect_info };
$attr->{host} = _choice(@{ $self->servers });
$self->connect_info([$dsn, $user, $pass, $attr]);
return DBIx::Handler->new($dsn, $user, $pass, $attr, {
on_connect_do => $self->on_connect_do,
on_disconnect_do => $self->on_disconnect_do,
});
};
};
# and use it
package MyApp::DB {
use Mouse;
extends qw/Aniki::Handler/;
__PACKAGE__->setup(
handler => 'MyApp::DB::Handler',
);
}
1;
DESCRIPTION
This is database handler manager.
METHODS
CLASS METHODS
new(%args) : Aniki::Handler
Create instance of Aniki::Handler.
Arguments
connect_info : ArrayRef
-
Auguments for DBI's connect method.
- on_connect_do : CodeRef|ArrayRef[Str]|Str =item on_disconnect_do : CodeRef|ArrayRef[Str]|Str
-
Execute SQL or CodeRef when connected/disconnected.
INSTANCE METHODS
connect() : DBIx::Handler
Create instance of DBIx::Handler. You can override it in your custom handler class.