# Mojo::CouchDB A Mojolicious wrapper around [Mojo::UserAgent](https://docs.mojolicious.org/Mojo/UserAgent) that makes using [CouchDB](https://couchdb.apache.org/) from Perl, a lot of fun. ```perl use Mojo::CouchDB; # Create a CouchDB instance my $couch = Mojo::CouchDB->new('http://localhost:6984/books', 'username', 'password'); # Make a document my $book = { title => 'Nineteen Eighty Four', author => 'George Orwell' }; # Save your document to the database $book = $couch->save($book); # If _id is assigned to a hashref, save will update rather than create say $book->{_id}; # Automatically assigned when saving say $book->{_rev}; # Automatically assigned when saving $book->{title} = 'Dune'; $book->{author} = 'Frank Herbert' # Re-save to update the document $book = $couch->save($book); say $book->{_id}; # Same id as above # Get the document as a hashref my $dune = $couch->get($book->{id}); # Find first 5 books # See https://docs.couchdb.org/en/stable/api/database/find.html for the semantics of finding. my $books = $couch->find({ limit => 5, skip => 0, fields => [ 'title', 'author' ] }); ``` ## Installation ```bash $ cpanm Mojo::CouchDB ``` ## Basics This is an example of a [Mojolicious::Lite](https://docs.mojolicious.org/Mojolicious/Lite) application using [Mojo::CouchDB](#). ```perl use Mojolicious::Lite -signatures; use Mojo::CouchDB; helper user_db => sub { state $user_db = Mojo::Couch->new('http://127.0.0.1:5984/users', 'username', 'password'); }; get '/:user' => sub { my $c = shift; my $user = $c->user_db->get($c->param('user')) || return $c->rendered(404); return $c->render(json => $user); }; app->start; ``` It is recommended to use a helper when using Mojo::CouchDB with Mojolicious. ## Author Rawley Fowler ## Credits Sebastion Riedel (the creator of Mojolicious). The Apache Foundation for making CouchDB. ## Copyright and License Copyright (C) 2023, Rawley Fowler This library is free software; you may distribute, and/or modify it under the terms of the Artistic License version 2.0.