#
# [query_servers]
# perl = /usr/bin/perl /srv/angular-mojolicious/couchdb-view-server.pl
+#
+# example view:
+#
+# sub { [ undef, shift ] }
use JSON::XS;
use IO::Handle;
my $out = IO::Handle->new_from_fd(\*STDOUT, 'w');
$out->autoflush(1);
+open(my $l_fh, '>', "/tmp/couchdb-perl-view.log");
+
sub _log {
- $out->print(qq|["log", "@_"]\n|);
- warn "# log @_\n";
+ $out->print($j->encode([ 'log' => @_ ]), "\n");
+ print $l_fh "@_\n";
}
our $fun;
while(defined(my $line = $in->getline)) {
chomp $line;
+ _log $line if $ENV{DEBUG};
my $input = $j->decode($line);
my ($cmd, @args) = @$input;
undef $fun;
$out->print("true\n");
} elsif ( $cmd eq 'add_fun' ) {
- $fun = eval @args;
+ $fun = eval $args[0];
if ( $@ ) {
$out->print( qq|{"error": "$!", "reason": "$@"}\n| );
} else {
}
} elsif ( $cmd eq 'map_doc' ) {
my @results;
- our @d;
- local @d;
- eval { $fun->(@args) };
+ our $d;
+ local $d;
+ $d = eval { $fun->(@args) };
if ( $@ ) {
_log $@;
} else {
- push @results, [@d];
+ push @results, [$d];
}
$out->print($j->utf8->encode( \@results ), "\n");
} else {
- die "$cmd unimplemented", dump( $input );
+ _log "$cmd unimplemented", dump( $input );
}
}
--- /dev/null
+["reset",{"reduce_limit":true,"timeout":5000}]
+["add_fun","sub {\n [ shift->{_id}, 1 ];\n}"]
+["map_doc",{"_id":"cb71ad755be66b467ae5e51e4100e027","_rev":"3-11fd6bead394b463531889babc686ac4","trigger":{"active":["t61p:11026","1317673926.10924","1317673926.15453","0"],"output":"","command":"notify-send \"CouchDB trigger notify example\""}}]