a very slim perl interface to CouchDB - only document/view API
Perl
Switch branches/tags
Pull request Compare This branch is 7 commits ahead, 127 commits behind norbu09:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/Store
t
.gitignore
Changes
MANIFEST
MANIFEST.SKIP
Makefile.PL
README
ignore.txt

README

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’

       db

       The DB to use. This has to be set for all oprations!

       authrealm

       Perform authentication for this realm. (optional)

       username

       The username for authentication (mandatory when using authrealm)

       password

       The password to use for authentication (mandatory when using authrealm)

       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, "<norbu09 at cpan.org>"

BUGS
       Please report any bugs or feature requests to "bug-store-couchdb at
       rt.cpan.org", or through the web interface at
       <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Store-CouchDB>.  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

           <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Store-CouchDB>

       ·   AnnoCPAN: Annotated CPAN documentation

           <http://annocpan.org/dist/Store-CouchDB>

       ·   CPAN Ratings

           <http://cpanratings.perl.org/d/Store-CouchDB>

       ·   Search CPAN

           <http://search.cpan.org/dist/Store-CouchDB/>

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)