about summary refs log tree commit diff
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2010-07-07 13:52:16 +0200
committerfranck cuny <franck@lumberjaph.net>2010-07-07 13:52:16 +0200
commit83d931fc9bb7741ae9076ffa53f49823960e49ca (patch)
tree850d4ddefaf6037dcd60fc82455f1756269ec3cb
parentdelete job (diff)
downloadpresque-83d931fc9bb7741ae9076ffa53f49823960e49ca.tar.gz
can return all jobs from a queue
-rw-r--r--lib/presque/StatusHandler.pm29
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});
+                }
             }
         );
     }