Couchpenter is CouchDB database and document setup tool.
npm install -g couchpenter
Create setup file example:
couchpenter init
Set up databases and documents:
couchpenter setup -u http://user:pass@localhost:5984 -f couchpenter.json
Programmatically:
var couchpenter = new require('couchpenter').Couchpenter();
couchpenter.setUp('http://user:pass@localhost:5984', 'couchpenter.json', process.cwd(), function (err) {
// do something
});
Couchpenter setup file is a just a simple JSON file containing:
{
"db1": [
{ "_id": "doc1", "foo": "bar" },
{ "_id": "doc2", "foo": "bar" },
"path/to/doc3file.json"
],
"db2": [
{ "_id": "doc4", "foo": "bar" },
"path/to/modulename"
],
"db3": [],
"_replicator": {
{
"_id": "db1_pull",
"source": "http://user:pass@remotehost:5984/db1",
"target": "db1",
"user_ctx": {
"name": "user",
"roles": ["_admin"]
},
"continuous": true,
"max_replication_retry_count": "infinity"
}
}
}
Property keys are the names of the databases that should exist in CouchDB. If a database does not exist, it will then be created.
Property values are the documents that should exist in each database. If the document does not exist, it will then be created. If it already exists, it will then be updated.
A document can be represented as:
- an object
- a file path string containing a JSON document, file name must end with .json
- a module path string
Paths are relative to current directory if it's used from command-line, or relative to setUp's dir (process.cwd() in the usage example further above) if it's used programmatically.
Follow @cliffano on Twitter.