--- trunk/lib/Frey/CouchAPI.pm 2009/04/24 15:32:04 1059 +++ trunk/lib/Frey/CouchAPI.pm 2009/04/24 17:41:45 1060 @@ -65,6 +65,14 @@ sub file_rev { (stat($_[0]))[9] } # mtime +sub data_from_tx { + my $tx = shift; + my $data = $tx->req->content->file->slurp; + $data = JSON->new->allow_nonref->decode( $data ); + warn "## data ",dump( $data ); + return $data; +} + sub dispatch { my ($self,$tx) = @_; @@ -97,9 +105,7 @@ $part =~ s!/!'}->{'!; $part =~ s/$/'}/; - my $data = $tx->req->content->file->slurp; - $data = JSON->new->allow_nonref->decode( $data ); - warn "## data ",dump( $data ); + my $data = data_from_tx( $tx ); # poor man's transaction :-) my $code = "\$json$part = \$data; \$config$part = \$data;"; eval $code; @@ -194,6 +200,7 @@ my $startkey = delete $arg->{startkey}; my $endkey = delete $arg->{endkey}; my $limit = delete $arg->{limit}; + my $skip = delete $arg->{skip}; my $total_rows = 0; my @docs = grep { length $_ } map { @@ -222,6 +229,7 @@ } glob( "$path/$database/*" ); + $offset += $skip if $skip; warn "## docs $startkey -> $endkey limit $limit ", dump( @docs ); # if $debug; @@ -307,8 +315,12 @@ $status = 404; } } elsif ( $method eq 'POST' ) { + my $data = data_from_tx( $tx ); + + # FIXME implement real view server and return 200 $json = { total_rows => 0, offset => 0 }; - $status = 202; # FIXME implement real view server and return 200 + $status = 202; + } else { $status = 501; }