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.
    npm install couch_adapterCreating 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.
Creates a document in the configured database.
    adapter.create(doc).then((result) => {
        console.log(result);
    });Retrieves a document that matches ID from database
    adapter.read(id).then((result) => {
        console.log(result);
    });Retrieves a set of documents from the database
    adapter.readBulk(skip, limit).then((result) => {
        console.log(result);
    });;Updates a document in the database. doc is document
    adapter.update(doc).then((result) => {
        console.log(result);
    });Deletes a document in the database that matches the passed id.
    adapter.delete(id).then((result) => {
        console.log(result);
    });Retrieves the version of the module.
    adapter.getVersion().then((result) => {
        console.log(result);
    });Retrieves the logLevel of the object.
    adapter.logLevel().then((result) => {
        console.log(result);
    });{ 
  "ok": true,
  "id": "awest2",
  "rev": "1-f371adad4ce4b07c5702f103ae9f0864" 
}{ 
  "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.
{ 
  "total_rows": 1,
  "offset": 0,
  "rows": 
   [ { "id": "awest", "key": "EDL", "value": "awest", "doc": { }} ] 
}{
    "version": "1.0.0"
}{
    "logLevel": "info"
}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 [email protected].
Contributors Welcome!
Thanks