DB-CouchDB-Schema
view release on metacpan or search on metacpan
lib/DB/CouchDB.pm view on Meta::CPAN
my $db = $self->{db};
my $uri = $self->uri();
$uri->path('/'.$db);
return $uri;
}
sub _uri_db_docs {
my $self = shift;
my $db = $self->{db};
my $uri = $self->uri();
$uri->path('/'.$db.'/_all_docs');
return $uri;
}
sub _uri_db_doc {
my $self = shift;
my $db = $self->{db};
my $doc = shift;
my $uri = $self->uri();
$uri->path('/'.$db.'/'.$doc);
return $uri;
}
sub _uri_db_bulk_doc {
my $self = shift;
my $db = $self->{db};
my $uri = $self->uri();
$uri->path('/'.$db.'/_bulk_docs');
return $uri;
}
sub _uri_db_view {
my $self = shift;
my $db = $self->{db};
my $view = shift;
my $uri = $self->uri();
$uri->path('/'.$db.'/_view/'.$view);
return $uri;
}
sub uri_db_temp_view {
my $self = shift;
my $db = $self->{db};
my $uri = $self->uri();
$uri->path('/'.$db.'/_temp_view');
return $uri;
}
sub _call {
my $self = shift;
my $method = shift;
my $uri = shift;
my $content = shift;
my $req = HTTP::Request->new($method, $uri);
$req->content(Encode::encode('utf8', $content));
my $ua = LWP::UserAgent->new();
my $return = $ua->request($req);
my $response = $return->decoded_content({
default_charset => 'utf8'
});
my $decoded;
eval {
$decoded = $self->json()->decode($response);
};
if ($@) {
return {error => $return->code, reason => $response};
}
return $decoded;
}
package DB::CouchDB::Iter;
sub new {
my $self = shift;
my $results = shift;
my $rows = $results->{rows};
return bless { data => $rows,
count => $results->{total_rows},
offset => $results->{offset},
iter => mk_iter($rows),
iter_key => mk_iter($rows, 'key'),
error => $results->{error},
reason => $results->{reason},
}, $self;
}
sub count {
return shift->{count};
}
sub offset {
return shift->{offset};
}
sub data {
return shift->{data};
}
sub err {
return shift->{error};
}
sub errstr {
return shift->{reason};
}
sub next {
my $self = shift;
return $self->{iter}->();
}
sub next_key {
my $self = shift;
return $self->{iter_key}->();
}
sub next_for_key {
my $self = shift;
my $key = shift;
my $ph = $key."_iter";
if (! defined $self->{$ph} ) {
my $iter = mk_iter($self->{data}, 'value', sub {
my $item = shift;
return $item
if $item->{key} eq $key;
return;
});
( run in 1.356 second using v1.01-cache-2.11-cpan-39bf76dae61 )