Couch-DB
view release on metacpan or search on metacpan
lib/Couch/DB/Design.pm view on Meta::CPAN
$data->{_id} = $self->id;
$self->couch
->toJSON($data, bool => qw/autoupdate/)
->check($data->{lists}, deprecated => '3.0.0', 'DesignDoc create() option list')
->check($data->{lists}, removed => '4.0.0', 'DesignDoc create() option list')
->check($data->{show}, deprecated => '3.0.0', 'DesignDoc create() option show')
->check($data->{show}, removed => '4.0.0', 'DesignDoc create() option show')
->check($data->{rewrites}, deprecated => '3.0.0', 'DesignDoc create() option rewrites');
#XXX Do we need more parameter conversions in the nested queries?
$self->SUPER::create($data, %args);
}
# get/delete/etc. are simply produced by extension of the _pathToDoc() which
# adds "_design/" to the front of the path.
sub details(%)
{ my ($self, %args) = @_;
$self->couch->call(GET => $self->_pathToDoc('_info'),
$self->couch->_resultsConfig(\%args),
);
}
#--------------------
#--------------------
sub createIndex($%)
{ my ($self, $config, %args) = @_;
my $send = +{ %$config, ddoc => $self->id };
my $couch = $self->couch;
$couch->toJSON($send, bool => qw/partitioned/);
$couch->call(POST => $self->db->_pathToDB('_index'),
send => $send,
$couch->_resultsConfig(\%args),
);
}
sub deleteIndex($%)
{ my ($self, $ddoc, $index, %args) = @_;
my $id = $self->idBase; # id() would also work
$self->couch->call(DELETE => $self->db->_pathToDB("_index/$id/json/" . uri_escape($index)),
$self->couch->_resultsConfig(\%args),
);
}
sub __searchRow($$$%)
{ my ($self, $result, $index, $column, %args) = @_;
my $answer = $result->answer->{rows}[$index] or return ();
my $values = $result->values->{rows}[$index];
( answer => $answer,
values => $values,
docdata => $args{full_docs} ? $values : undef,
docparams => { db => $self },
);
}
sub search($$%)
{ my ($self, $index, $search, %args) = @_;
my $query = defined $search ? +{ %$search } : {};
# Everything into the query :-( Why no POST version?
my $couch = $self->couch;
$couch
->toQuery($query, json => qw/counts drilldown group_sort highlight_fields include_fields ranges sort/)
->toQuery($query, int => qw/highlight_number highlight_size limit/)
->toQuery($query, bool => qw/include_docs/);
$couch->call(GET => $self->_pathToDoc('_search/' . uri_escape $index),
introduced => '3.0.0',
query => $query,
$couch->_resultsPaging(\%args,
on_row => sub { $self->__searchRow(@_, full_docs => $search->{include_docs}) },
),
);
}
sub indexDetails($%)
{ my ($self, $index, %args) = @_;
$self->couch->call(GET => $self->_pathToDoc('_search_info/' . uri_escape($index)),
introduced => '3.0.0',
$self->couch->_resultsConfig(\%args),
);
}
#--------------------
sub viewDocs($;$%)
{ my ($self, $view, $search, %args) = @_;
$self->db->allDocs($search, view => $view, design => $self, %args);
}
sub compactViews(%)
{ my ($self, %args) = @_;
$self->couch->call(POST => $self->_pathToDB('_compact/', uri_escape($self->baseId)),
send => +{},
$self->couch->_resultsConfig(\%args),
);
}
#--------------------
sub show($;$%)
{ my ($self, $function, $doc, %args) = @_;
my $path = $self->_pathToDoc('_show/'.uri_escape($function));
$path .= '/' . (blessed $doc ? $doc->id : $doc) if defined $doc;
$self->couch->call(GET => $path,
deprecated => '3.0.0',
( run in 1.061 second using v1.01-cache-2.11-cpan-39bf76dae61 )