Skip to content

ValidUSA/couch_adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Index

What is couch_adapter

couch_adapter is a simple abstraction that removes dependencies from couch specific logic and mechanisms from your API and/or website. It provides a simple CRUD interface that can be extended, modified, or replaced with another module at a later time, if couchDB needs replaced.

Installation

    npm install couch_adapter

Usage

Construction Usage

Creating a new adapter instance is as easy as:

    let adapter = require("couch_adapter")(options);

Constructor Options is an object that can contain the following:

  • db: The database you wish to attach to. (Required)
  • url: The couch url to connect to. -- Can be COUCH_URL environment Variable
  • user: Couch User details. -- Can be COUCH_USER environment Variable
  • pass: Couch Password details. -- Can be COUCH_PASS environment Variable
  • design: (Optional) Design document to use.
  • view: (Optional) view to be used
  • logLevel: Defaults to "info" ("fatal","error","warn","info","debug","trace")
  • read: Method for reading individual document if you want to override default.
  • readBulk: Method for reading many documents, if you want to override default.
  • create: Method for creating a document, if you want to override default.
  • deleteId: Method for deleting a document, if you want to override default.
  • update: Method for updating a document, if youw want to override default.

Creating an adapter returns an object with 7 methods: create, read, update, delete, readBulk, getVersion, and logLevel. All methods return a promise.

Create

Creates a document in the configured database.

    adapter.create(doc).then((result) => {
        console.log(result);
    });

Read

Retrieves a document that matches ID from database

    adapter.read(id).then((result) => {
        console.log(result);
    });

Read Bulk

Retrieves a set of documents from the database

    adapter.readBulk(skip, limit).then((result) => {
        console.log(result);
    });;

Update

Updates a document in the database. doc is document

    adapter.update(doc).then((result) => {
        console.log(result);
    });

Delete

Deletes a document in the database that matches the passed id.

    adapter.delete(id).then((result) => {
        console.log(result);
    });

getVersion

Retrieves the version of the module.

    adapter.getVersion().then((result) => {
        console.log(result);
    });

logLevel

Retrieves the logLevel of the object.

    adapter.logLevel().then((result) => {
        console.log(result);
    });

Results

Create/Update/Delete Result

{ 
  "ok": true,
  "id": "awest2",
  "rev": "1-f371adad4ce4b07c5702f103ae9f0864" 
}
Read Bulk Result
{ 
  "total_rows": 3,
  "offset": 0,
  "rows": 
   [ 
     { "id": "awest", "key": "EDL", "value": "awest" },
     { "id": "ckent", "key": "ID", "value": "ckent" },
     { "id": "jtest", "key": "PDL", "value": "jtest" } 
   ] 
}

Note: Read Bulk does not attach documents to the results.

Read Result

{ 
  "total_rows": 1,
  "offset": 0,
  "rows": 
   [ { "id": "awest", "key": "EDL", "value": "awest", "doc": { }} ] 
}

Version Result

{
    "version": "1.0.0"
}

logLevel Result

{
    "logLevel": "info"
}

Developers

Tests require a couch instance to execute. Configure settings in ./test/configData/config.json.

Scripts available:

  • npm test : Runs all tests in the /test/ directory

  • npm run coverage : generates an instanbul coverage report

  • npm run lint : Performs linting of the files with my style using jshint and jscs

Logs are generaged at either process.env.LOG_DIR or at the root directory of the calling application. Logs are generated using PINO, and follow the naming schema: couch_adapter_MMDDYYYY.log

If you have any questions, suggestions, or issues please contact me at jashworth@validusa.com.

Contributors Welcome!

Thanks

About

simple couch abstraction library

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published