diff options
author | franck cuny <franck@lumberjaph.net> | 2010-07-07 13:52:16 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-07-07 13:52:16 +0200 |
commit | 83d931fc9bb7741ae9076ffa53f49823960e49ca (patch) | |
tree | 850d4ddefaf6037dcd60fc82455f1756269ec3cb /lib | |
parent | delete job (diff) | |
download | presque-83d931fc9bb7741ae9076ffa53f49823960e49ca.tar.gz |
can return all jobs from a queue
Diffstat (limited to 'lib')
-rw-r--r-- | lib/presque/StatusHandler.pm | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/lib/presque/StatusHandler.pm b/lib/presque/StatusHandler.pm index 51499e6..e8870da 100644 --- a/lib/presque/StatusHandler.pm +++ b/lib/presque/StatusHandler.pm @@ -14,12 +14,37 @@ sub get { my ($self, $queue_name) = @_; if ($queue_name) { - my $key = $self->_queue($queue_name); + my $input = $self->request->parameters; + my $with_desc = ($input && $input->{with_desc}) ? 1 : 0; + my $key = $self->_queue($queue_name); $self->application->redis->llen( $key, sub { my $size = shift; - $self->entity({queue => $queue_name, size => $size}); + if ($with_desc) { + $self->application->redis->lrange( + $self->_queue($queue_name), + 0, $size, + sub { + my $jobs = shift; + $self->application->redis->mget( + @$jobs, + sub { + my $full_jobs = shift; + $self->entity( + { queue => $queue_name, + size => $size, + jobs => $full_jobs, + } + ); + } + ); + } + ); + } + else { + $self->entity({queue => $queue_name, size => $size}); + } } ); } |