Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

couch-init2

Package Overview
Dependencies
Maintainers
1
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

couch-init2

Opiniated CouchDB databases initializer

  • 6.0.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-80%
Maintainers
1
Weekly downloads
 
Created
Source

couch-init2

npm package node

An opiniated CouchDB databases initializer

Takes a list of databases to initialise and their design docs, and make sure that everything is up and running and in sync.

Installation

in a terminal, at the root of your project

# ESM
npm install couch-init2
# CommonJS
npm install couch-init2@5

How To

import couchInit from 'couch-init2'

const dbUrl = 'http://username:password@localhost:5984'
const dbsList = [
   {
     name: 'dbname1',
     designDocs: ['designdoc1']
   },
   {
     name: 'dbname2',
     designDocs: ['designdoc2', 'designdoc3']
   },
   {
     name: 'dbname3',
     designDocs: []
   }
 ]
// Path to the folder where design docs can be found on the model `${designDocName}.json`
// If a design doc file from the list is missing, it will be created with a basic design doc structure
// If a design doc file changed, the database design doc will be updated
const designDocFolder = '/path/to/your/design/docs/folder'

const { ok, operations } = await couchInit(dbUrl, dbsList, designDocFolder)
console.log('ok', res.ok)
console.log('operations', res.operations)
// dbs were successfully initialized!
// time to start your server or whatever crazy thing you're building :)

Design docs formats

json

The JSON format is identical to the document in database, minus the _rev id.

{
  "_id": "_design/example",
  "language": "javascript",
  "views": {
    "byFoo": {
      "map": "function (doc) {\n  if (doc.foo) emit(doc.foo, 1)\n}"
    }
  }
}
js

The JS format allows to use a JS module that exports just the views object, the _id being deduced from the filename (ex: if the file is named foo.js, the _id will be _design/foo)

export default {
  byFoo: {
    map: function (doc) {
      if (doc.foo) emit(doc.foo, 1)
    },
    reduce: function(keys, values) {
      return values.reduce((a, b) => a + b, 0)
    },
  },
  byBar: {
    // The function stringification won't be able to detect variables in scope.
    // In this case, you have to pass the function and its dependencies as a string.
    map: `
      const double = num => num * 2

      function (doc) {
        if (doc.foo) emit(doc.foo, double(1))
      }`,
  },
  byBuzz: {
    // Alternatively, an array of functions can be passed to preserve text editor
    // features such as syntax highlighting or linting
    map: [
      function double (num) { num * 2 },
      function (doc) {
        if (doc.example) emit(doc.example, double(1))
      }
    ]
  },
}

What it does

  • create databases if missing
  • create or update design documents if not up-to-date
  • create security documents if missing

See also

  • couchdb-bootstrap: Bootstrap CouchDB projects: configure, setup security, deploy ddocs and create users.

Keywords

FAQs

Package last updated on 28 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc