MojoX-Session
view release on metacpan or search on metacpan
lib/MojoX/Session/Store/Dbi.pm view on Meta::CPAN
package MojoX::Session::Store::Dbi;
use strict;
use warnings;
use base 'MojoX::Session::Store';
use MIME::Base64;
use Storable qw/nfreeze thaw/;
__PACKAGE__->attr('dbh');
__PACKAGE__->attr(table => 'session');
__PACKAGE__->attr(sid_column => 'sid');
__PACKAGE__->attr(expires_column => 'expires');
__PACKAGE__->attr(data_column => 'data');
sub create {
my ($self, $sid, $expires, $data) = @_;
$data = encode_base64(nfreeze($data)) if $data;
my $table = $self->table;
my $sid_column = $self->sid_column;
my $expires_column = $self->expires_column;
my $data_column = $self->data_column;
my $sth = $self->dbh->prepare(<<"");
INSERT INTO $table ($sid_column,$expires_column,$data_column) VALUES (?,?,?)
return unless $sth;
return $sth->execute($sid, $expires, $data);
}
sub update {
my ($self, $sid, $expires, $data) = @_;
$data = encode_base64(nfreeze($data)) if $data;
my $table = $self->table;
my $sid_column = $self->sid_column;
my $expires_column = $self->expires_column;
my $data_column = $self->data_column;
my $sth = $self->dbh->prepare(<<"");
UPDATE $table SET $expires_column=?,$data_column=? WHERE $sid_column=?
return unless $sth;
return $sth->execute($expires, $data, $sid);
}
sub load {
my ($self, $sid) = @_;
my $table = $self->table;
my $sid_column = $self->sid_column;
my $expires_column = $self->expires_column;
my $data_column = $self->data_column;
my $sth = $self->dbh->prepare("SELECT * FROM $table WHERE $sid_column=?");
return unless $sth;
my $rv = $sth->execute($sid);
return unless $rv;
my $result = $sth->fetchrow_hashref;
return unless $result;
$result->{$data_column} = thaw(decode_base64($result->{$data_column}))
if $result->{$data_column};
return ($result->{$expires_column}, $result->{$data_column});
}
sub delete {
my ($self, $sid) = @_;
my $table = $self->table;
my $sid_column = $self->sid_column;
my $sth = $self->dbh->prepare("DELETE FROM $table WHERE $sid_column=?");
return unless $sth;
return $sth->execute($sid);
}
1;
__END__
=head1 NAME
MojoX::Session::Store::Dbi - Dbi Store for MojoX::Session
=head1 SYNOPSIS
( run in 0.486 second using v1.01-cache-2.11-cpan-39bf76dae61 )