Преглед на файлове

added /updates route and modified the shared render_query

Joel Berger преди 11 години
родител
ревизия
fa38a442ab
променени са 1 файла, в които са добавени 18 реда и са изтрити 8 реда
  1. 18 8
      mojolicious/app.pl

+ 18 - 8
mojolicious/app.pl

@@ -23,10 +23,7 @@ get '/db' => sub { shift->render_query(1) };
 
 
 get '/queries' => sub {
 get '/queries' => sub {
   my $c = shift;
   my $c = shift;
-  my $q = $c->param('queries');
-  $q = 1 unless looks_like_number($q);
-  $q = 500 if $q > 500;
-  $c->render_query($q);
+  $c->render_query($c->param('queries'));
 };
 };
 
 
 get '/fortunes' => sub {
 get '/fortunes' => sub {
@@ -38,14 +35,22 @@ get '/fortunes' => sub {
   });
   });
 };
 };
 
 
+get '/updates' => sub {
+  my $c = shift;
+  $c->render_query($c->param('queries'), 1);
+};
+
 get '/plaintext' => sub { shift->render( text => 'Hello, World!' ) };
 get '/plaintext' => sub { shift->render( text => 'Hello, World!' ) };
 
 
 # Additional helpers (shared code)
 # Additional helpers (shared code)
 
 
 helper 'render_query' => sub {
 helper 'render_query' => sub {
-  my ($self, $q) = @_;
+  my ($self, $q, $update) = @_;
   $self->render_later;
   $self->render_later;
 
 
+  $q = 1 unless looks_like_number($q);
+  $q = 500 if $q > 500;
+
   my $r  = [];
   my $r  = [];
   my $tx = $self->tx;
   my $tx = $self->tx;
 
 
@@ -60,9 +65,14 @@ helper 'render_query' => sub {
     my $end = $delay->begin;
     my $end = $delay->begin;
     $world->find_one({_id => $id} => sub {
     $world->find_one({_id => $id} => sub {
       my ($collection, $err, $doc) = @_;
       my ($collection, $err, $doc) = @_;
-      # return warn $err if $err;
-      push @$r, { id => $id, randomNumber => $doc->{randomNumber} };
-      $end->();
+      if ($update) {
+        my $rand = 1 + int rand 10_000;
+        push @$r, { id => $id, randomNumber => $rand };
+        $world->update({_id => $id}, {'$set' => { randomNumber => $rand }}, $end);
+      } else {
+        push @$r, { id => $id, randomNumber => $doc->{randomNumber} };
+        $end->();
+      }
     });
     });
   }
   }