]> iEval git - gruntmaster-page.git/blobdiff - lib/Gruntmaster/Data.pm
Exclude jobs sent before contest start from standings
[gruntmaster-page.git] / lib / Gruntmaster / Data.pm
index aac9ad1f77e3932adc23c7d1ee9e384f1a2ad5ee..1b2492cc28c6a07dc927edf30d4039ec9fe1e1eb 100644 (file)
@@ -17,7 +17,7 @@ sub dynsub{
 }
 
 BEGIN {
-       for my $cmd (qw/multi exec smembers get hget hdel hset sadd srem incr hmset hsetnx publish/) {
+       for my $cmd (qw/multi exec smembers get hget hdel hset sadd srem incr hmset hsetnx publish del/) {
                dynsub uc $cmd, sub { $redis->$cmd(@_) };
        }
 
@@ -52,6 +52,11 @@ sub defhash{
                dynsub "set_${name}_$key", sub ($$) { HSET cp . "$name.$_[0]", $key, $_[1] };
        }
 
+       dynsub "edit_$name", sub {
+               my ($key, %values) = @_;
+               HMSET cp . "$name.$key", %values;
+       };
+
        dynsub "insert_$name", sub {
                my ($key, %values) = @_;
                SADD cp . $name, $key or return;
@@ -60,6 +65,7 @@ sub defhash{
        dynsub "remove_$name", sub (_) {
                my $key = shift;
                SREM cp . $name, $key;
+               DEL cp . "$name.$key";
        };
 
        dynsub "push_$name", sub {
@@ -71,13 +77,23 @@ sub defhash{
 
 defhash problem => qw/name level statement owner author/;
 defhash contest => qw/start end name owner/;
-defhash job => qw/date extension filesize private problem result result_text user/;
+defhash job => qw/date errors extension filesize private problem result result_text user/;
 defhash user => qw/name email town university level/;
 
 sub clean_job (_){
        HDEL cp . "job.$_[0]", qw/result result_text results daemon/
 }
 
+sub mark_open {
+       my ($problem, $user) = @_;
+       HSETNX cp . 'open', "$problem.$user", time;
+}
+
+sub get_open {
+       my ($problem, $user) = @_;
+       HGET cp . 'open', "$problem.$user";
+}
+
 our @EXPORT = do {
        no strict 'refs';
        grep { $_ =~ /^[a-zA-Z]/ and exists &$_ } keys %{__PACKAGE__ . '::'};
This page took 0.026928 seconds and 4 git commands to generate.