pass query params to CouchDB
[angular-mojolicious.git] / angular-server.pl
index e9f23be..cce38a4 100755 (executable)
@@ -32,7 +32,7 @@ sub _couchdb_put {
                my $response = $tx->res->json;
                warn "## response $code ",dump($response);
                if ($tx->error) {
-                       die "ERROR $code $message";
+                       warn "ERROR $code $message";
                }
                return
                $rev = $response->{rev};
@@ -86,7 +86,7 @@ get '/data/:database' => sub {
                        language => 'javascript',
                        views => {
                                counts => {
-                                       map    => q| function(doc) { emit(doc.$entity,1); } |,
+                                       map    => q| function(doc) { emit(doc._id.split('.')[0],1); } |,
                                        reduce => q| function(keys,values,rereduce) { return sum(values); } |,
                                }
                        }
@@ -162,6 +162,28 @@ get '/conference/:page' => sub {
        $self->render( "conference/" . $self->param('page'), layout => 'angular' );
 };
 
+# /app/
+
+get '/app/:database/angular.js' => sub {
+       my $self = shift;
+       my $ANGULAR_JS = $ENV{ANGULAR_JS} || ( -e 'public/angular/build/angular.js' ? '/angular/build/angular.js' : '/angular/src/angular-bootstrap.js' );
+       warn "# $ANGULAR_JS";
+       $self->render_static( $ANGULAR_JS );
+};
+
+# CouchDB proxy for _design _view
+
+get '/:database/_design/:design/_view/:view' => sub {
+       my $self = shift;
+       my $url = $self->param('url');
+       my $param = $self->req->url->query->to_string;
+       warn "# /couchdb $url ", 
+       _render_jsonp( $self, _couchdb_get(
+               $self->param('database') . '/_design/' . $self->param('design') . '/_view/' . $self->param('view')
+               . ( $param ? '?'.$param : '' )
+       ));
+};
+
 app->start;
 __DATA__