# CouchDBEx

[![Build Status](](
[![Coverage Status](](

This is supposed to be the *good* couchdb interface for elixir,
documented, tested and other things, but that's in progress for now, i know
there are erlang and elixir clients already, but they are basically dead and not
documented very good if at all, so i'm writing this one.

Some features implemented:

- Single and mass document insertion/deletion/update
- Subscribing to changes in the database
- Basic and cookie authentification
- Database configuration retreival and setting
- Document finding
- Attachment uploading (no deleting yet)
- Index creation/deletion/listing
- Replication

## Usage example

First, add the couchdb worker to your supervisor

    children = [
      {CouchDBEx.Worker, [
          hostname: "http://localhost",
          basic_auth_username: "couchdb",
          basic_auth_password: "couchdb"

    opts = [strategy: :one_for_one, name: Application.Supervisor]
    Supervisor.start_link(children, opts)

Then, you use functions from `CouchDBEx`

:ok = CouchDBEx.db_create("couchdb-ex-test")

{:ok, doc} = CouchDBEx.document_insert_one("couchdb-ex-test", %{test_value: 1})

This library also includes subscribing to database changes with `CouchDBEx.changes_sub` and `_ubsub`,
see respective functions documentation for more (not yet online...)

## Contribution

Please do open issues and pull requests if you feel like something
is wrong, this library probably doesn't have everything you need yet.