/
Redis.pm
43 lines (32 loc) · 953 Bytes
/
Redis.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package Kentarok::Now::Storage::Redis;
use Mouse;
with qw(Kentarok::Now::Storage);
no Mouse;
__PACKAGE__->meta->make_immutable;
use Redis;
use JSON::XS ();
use Dancer ':syntax';
sub redis {
# ここでおもむろにDancerのconfig使うのよくないのでちゃんとするべき
my $redis = Redis->new(%{config->{redis}});
if (config->{redis}{password}) {
$redis->auth(config->{redis}{password});
}
$redis;
}
sub create {
my ($self, %args) = @_;
my $table = delete $args{table};
redis->lpush($table, JSON::XS::encode_json(\%args));
}
sub retrieve {
my ($self, %args) = @_;
my $table = delete $args{table};
my $offset = delete $args{offset} || 0;
my $limit = delete $args{limit} ? ($args{offset} + $args{limit}) - 1
: $args{offset};
+[ map { JSON::XS::decode_json($_) } redis->lrange($table, $offset, $limit) ];
}
sub update {}
sub delete {}
!!1;