AC-Yenta

 view release on metacpan or  search on metacpan

lib/AC/Yenta/Store/SQLite.pm  view on Meta::CPAN

}

sub get {
    my $me  = shift;
    my $map = shift;
    my $sub = shift;
    my $key = shift;

    debug("get $map/$sub/$key");

    my $st = _do($me->{db}, 'select value, 1 from ykv where map = ? and sub = ? and key = ?', $map, $sub, $key);

    my($v, $found) = $st->fetchrow_array();
    return unless $found;

    $v = decode_base64($v);

    if( wantarray ){
        return ($v, 1);
    }
    return $v;

lib/AC/Yenta/Store/SQLite.pm  view on Meta::CPAN


sub put {
    my $me  = shift;
    my $map = shift;
    my $sub = shift;
    my $key = shift;
    my $val = shift;

    debug("put $map/$sub/$key");

    my $st = _do($me->{db}, 'select 1 from ykv where map = ? and sub = ? and key = ?', $map, $sub, $key);
    my($found) = $st->fetchrow_array();

    if( $found ){
        _do($me->{db}, 'update ykv set value = ? where map = ? and sub = ? and key = ?', encode_base64($val), $map, $sub, $key);
    }else{
        _do($me->{db}, 'insert into ykv (map,sub,key,value) values (?,?,?,?)',  $map, $sub, $key, encode_base64($val));
    }

    return 1;
}

lib/AC/Yenta/Store/SQLite.pm  view on Meta::CPAN

sub range {
    my $me  = shift;
    my $map = shift;
    my $sub = shift;
    my $key = shift;
    my $end = shift;	# undef => to end of map

    my $st;

    if( defined $end ){
        $st = _do($me->{db}, 'select key as k, value as v from ykv where map = ? and sub = ? and key >= ? and key < ?',
                     $map, $sub, $key, $end);
    }else{
        $st = _do($me->{db}, 'select key as k, value as v from ykv where map = ? and sub = ? and key >= ?',
                     $map, $sub, $key);
    }

    my $r = $st->fetchall_arrayref({});

    return @$r;
}

################################################################



( run in 0.558 second using v1.01-cache-2.11-cpan-49f99fa48dc )