diff options
-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}); + } } ); } |