}
BEGIN {
- for my $cmd (qw/multi exec smembers get hget hdel hset sadd srem incr hmset hsetnx/) {
- dynsub uc $cmd, sub { say "Arguments to \U$cmd: ", join ', ', @_; $redis->$cmd(@_) };
+ for my $cmd (qw/multi exec smembers get hget hdel hset sadd srem incr hmset hsetnx publish del/) {
+ dynsub uc $cmd, sub { $redis->$cmd(@_) };
}
- for my $cmd (qw/publish subscribe wait_for_messages/) {
- dynsub uc $cmd, sub { say "Arguments to \U$cmd: ", join ', ', @_; $pubsub->$cmd(@_) };
+ for my $cmd (qw/subscribe wait_for_messages/) {
+ dynsub uc $cmd, sub { $pubsub->$cmd(@_) };
}
}
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;
dynsub "remove_$name", sub (_) {
my $key = shift;
SREM cp . $name, $key;
+ DEL cp . "$name.$key";
};
dynsub "push_$name", sub {
};
}
-defhash problem => qw/name level statement/;
+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/
}
-our @EXPORT_OK = do {
+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__ . '::'};
};