Store::CouchDB(3) User Contributed Perl Documentation Store::CouchDB(3) NAME Store::CouchDB - a simple CouchDB driver VERSION VERSION 1.3 SYNOPSIS Store::CouchDB is a very this wrapper around CouchDB. It is essentially a set of calls I use in production and that came in handy. This is not meant to be a complete library, it is just complete enough for the things i need to do. use Store::CouchDB; my $db = Store::CouchDB->new(); $db->config({host => 'localhost', db => 'your_db'}); my $couch = { view => 'design_doc/view', opts => { key => '"' . $key . '"' }, }; my $status = $db->get_array_view($couch); FUNCTIONS new The Store::CouchDB class takes a number of parameters: debug Sets the class in debug mode host The host to use. Defaults to ’localhost’ port The port to use. Defaults to ’5984’ ssl Connect to host via SSL/TLS. Defaults to ’0’ db The DB to use. This has to be set for all oprations! method This is internal and sets the request method to be used (GET|POST) err This is set if an error has occured and can be called to get the last error with the ’has_error’ predicate. $db->has_error purge_limit How many documents shall we try to purge. Defaults to 5000 get_doc The get_doc call returns a document by its ID get_doc({id => DOCUMENT_ID, [dbname => DATABASE]}) get_design_docs The get_design_docs call returns all design document names in an array reference. get_design_docs({[dbname => DATABASE]}) put_doc The put_doc call writes a document to the database and either updates a existing document if the _id field is present or writes a new one. Updates can also be done with the update_doc call but that is really just a wrapper for put_doc. put_doc({doc => DOCUMENT, [dbname => DATABASE]}) del_doc The del_doc call marks a document as deleted. CouchDB needs a revision to delete a document which is good for security but is not practical for me in some situations. If no revision is supplied del_doc will get the document, find the latest revision and delete the document. del_doc({id => DOCUMENT_ID, [rev => REVISION, dbname => DATABASE]}) update_doc The update_doc function is really just a wrapper for the put_doc call and mainly there for compatibility. the naming is different and it is discouraged to use and may disappear in a later version. update_doc({doc => DOCUMENT, [name => DOCUMENT_ID, dbname => DATABASE]}) copy_doc The copy_doc is _not_ the same as the CouchDB equivalent. In CouchDB the copy command wants to have a name/id for the new document which is mandatory and can not be ommitted. I find that inconvenient and made this small wrapper. All it does is getting the doc to copy, removes the _id and _rev fields and saves it back as a new document. copy_doc({id => DOCUMENT_ID, [dbname => DATABASE]}) There are several ways to represent the result of a view and various ways to query for a view. All the views support parameters but there are different functions for GET/POST view handling and representing the reults. The get_view uses GET to call the view and returns a hash with the _id as the key and the document as a value in the hash structure. This is handy for getting a hash structure for several documents in the DB. get_view( { view => 'DESIGN_DOC/VIEW', opts => { key => "\"" . KEY . "\"" } } ); get_post_view The get_post_view uses POST to call the view and returns a hash with the _id as the key and the document as a value in the hash structure. This is handy for getting a hash structure for several documents in the DB. get_post_view( { view => 'DESIGN_DOC/VIEW', opts => [ KEY1, KEY2, KEY3, ... ] } ); get_array_view The get_array_view uses GET to call the view and returns an array ireference of matched documents. This view functions is the one I use most and has the best support for corner cases. get_array_view( { view => 'DESIGN_DOC/VIEW', opts => { key => "\"" . KEY . "\"" } } ); purge This function tries to find deleted documents via the _changes call and then purges as many deleted documents as defined in $self->purge_limit which currently defaults to 5000. This call is somewhat experimental in the moment. purge({[dbname => DATABASE]}) compact This compacts the DB file and optionally calls purge and cleans up the view index as well. compact({[purge=>1, view_compact=>1]}) config This can be called with a hash of config values to configure the databse object. I use it frequently with sections of config files. config({[host => HOST, port => PORT, db => DATABASE]}) EXPORT Nothing is exported at this stage. INSTALLATION To install this module, run the following commands: perl Makefile.PL make make test make install AUTHOR Lenz Gschwendtner, "" BUGS Please report any bugs or feature requests to "bug-store-couchdb at rt.cpan.org", or through the web interface at . I will be notified, and then you’ll automatically be notified of progress on your bug as I make changes. SUPPORT You can find documentation for this module with the perldoc command. perldoc Store::CouchDB You can also look for information at: · RT: CPAN’s request tracker · AnnoCPAN: Annotated CPAN documentation · CPAN Ratings · Search CPAN COPYRIGHT & LICENSE Copyright 2010 Lenz Gschwendtner. This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. See http://dev.perl.org/licenses/ for more information. perl v5.10.0 2010-09-24 Store::CouchDB(3)