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};
#get '/' => 'index';
-get '/_replicate' => sub {
- my $self = shift;
-
- if ( my $from = $self->param('from') ) {
- my $got = $self->client->get( $from )->res->json;
- warn "# from $from ",dump($got);
-
- my $database = $got->{name};
- my $entities = $got->{entities};
-
- if ( $database && $entities ) {
- foreach my $entity ( keys %$entities ) {
- my $url = $from;
- $url =~ s{/?$}{/}; # add slash at end
- $url .= $entity;
- my $all = $self->client->get( $url )->res->json;
- warn "# replicated $url ", dump($all);
- foreach my $e ( @$all ) {
- delete $e->{_id}; # sanitize data from older implementation
- _couchdb_put( "/$database/$entity." . $e->{'$id'} => $e );
- }
- }
- }
- _render_jsonp( $self, $got );
- }
-};
get '/data/' => sub {
my $self = shift;
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); } |,
}
}
$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__