X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FGruntmaster%2FData.pm;h=544a6d060613d816a305c5e3ea6700a351523116;hb=3da9c3c228106c819530a0b8e4c646981e6f71c9;hp=f9162af3cfda71af69068f1cacbd69e8d727d129;hpb=cd9af27e94244e6454c3db787a8ca6811f44fc16;p=plack-app-gruntmaster.git diff --git a/lib/Gruntmaster/Data.pm b/lib/Gruntmaster/Data.pm index f9162af..544a6d0 100644 --- a/lib/Gruntmaster/Data.pm +++ b/lib/Gruntmaster/Data.pm @@ -16,8 +16,8 @@ sub dynsub{ } BEGIN { - for my $cmd (qw/multi exec smembers get hget hset sadd incr hmset/) { - dynsub uc $cmd, sub { say $cmd;exit;$redis->$cmd(@_) }; + for my $cmd (qw/multi exec smembers get hget hset sadd srem incr hmset hsetnx/) { + dynsub uc $cmd, sub { say "Arguments to \U$cmd: ", join ', ', @_; $redis->$cmd(@_) }; } } @@ -28,12 +28,16 @@ sub rexec () { EXEC } sub problems () { SMEMBERS cp . 'problem' } sub contests () { SMEMBERS cp . 'contest' } -sub jobcard () { GET cp . 'job' } +sub jobcard () { GET cp . 'job' } -sub job_results (_) { decode_json HGET cp . "job.$_[0]", 'results' } -sub set_job_results ($+) { HSET cp . "job.$_[0]", 'results', encode_json $_[1] } -sub problem_meta (_) { decode_json HGET cp . "pb.$_[0]", 'meta' } -sub set_problem_meta ($+) { HSET cp . "pb.$_[0]", 'meta', encode_json $_[1] } +sub job_results (_) { decode_json HGET cp . "job.$_[0]", 'results' } +sub set_job_results ($+) { HSET cp . "job.$_[0]", 'results', encode_json $_[1] } +sub job_inmeta (_) { decode_json HGET cp . "job.$_[0]", 'inmeta' } +sub set_job_inmeta ($+) { HSET cp . "job.$_[0]", 'inmeta', encode_json $_[1] } +sub problem_meta (_) { decode_json HGET cp . "problem.$_[0]", 'meta' } +sub set_problem_meta ($+) { HSET cp . "problem.$_[0]", 'meta', encode_json $_[1] } +sub job_daemon (_) { HGET cp . "job.$_[0]", 'daemon' } +sub set_job_daemon ($$) { HSETNX cp . "job.$_[0]", 'daemon', $_[1] }; sub defhash{ my ($name, @keys) = @_; @@ -47,6 +51,11 @@ sub defhash{ SADD cp . $name, $key or return; HMSET cp . "$name.$key", %values; }; + dynsub "remove_$name", sub (_) { + my $key = shift; + SREM cp . $name, $key; + }; + dynsub "push_$name", sub { my $nr = INCR cp . $name; HMSET cp . "$name.$nr", @_; @@ -59,7 +68,7 @@ defhash job => qw/date file name private problem result result_text user/; our @EXPORT_OK = do { no strict 'refs'; - grep { $_ =~ /^[a-z]/ and exists &$_ } keys %{__PACKAGE__ . '::'}; + grep { $_ =~ /^[a-zA-Z]/ and exists &$_ } keys %{__PACKAGE__ . '::'}; }; 1