5 # http://wiki.apache.org/couchdb/View_server
7 # /etc/couchdb/local.ini add:
10 # perl = /usr/bin/perl /srv/angular-mojolicious/couchdb-view-server.pl
14 # sub { [ undef, shift ] }
18 use Data::Dump qw(dump);
20 my $j = JSON::XS->new;
22 my $in = IO::Handle->new_from_fd(\*STDIN, 'r');
23 my $out = IO::Handle->new_from_fd(\*STDOUT, 'w');
26 open(my $l_fh, '>>', "/tmp/couchdb-perl-view.log");
34 $out->print($j->encode([ 'log' => @_ ]), "\n");
39 while(defined(my $line = $in->getline)) {
42 my $input = $j->decode($line);
43 my ($cmd, @args) = @$input;
45 if ( $cmd eq 'reset' ) {
47 $out->print("true\n");
48 } elsif ( $cmd eq 'add_fun' ) {
49 push @fun, eval $args[0];
51 $out->print( qq|{"error": "$!", "reason": "$@"}\n| );
53 $out->print("true\n");
55 } elsif ( $cmd eq 'map_doc' ) {
57 foreach my $fun ( @fun ) {
58 my $d = eval { $fun->(@args) };
62 my $json = $j->utf8->encode( \@results );
63 $out->print("$json\n");
66 _log "$cmd unimplemented", dump( $input );