Skip to content
This repository has been archived by the owner on Feb 25, 2021. It is now read-only.

ramiel/east-couchbase

Repository files navigation

Build Status

East Couchbase Adapter

couchbase adapter for east

Installation

npm install east east-couchbase -g

alternatively you could install it locally

Usage

Go to project dir and run

east init

create .eastrc file at current directory

{
    "adapter": "east-couchbase",
    "url": "couchbase://localhost",
    "dbauth": {
        "username": "admin",
        "password": "password"
    }
}

where url is url of database which you want to migrate (in couchbase url connection format)

The information about the migrations will be stored in a document under the key migration|<migration_name> (this behavior is configurable)

Options

This adapter takes some advanced options like in this example

{
    keyPrefix: 'migrations',
    keySeparator: '|',
    url: 'couchbase://localhost',
    bucket: {
        name: 'default',
        passwor: null
    },
    dbauth: {
        username: "admin",
        password: "password"
    }
}

keyPrefix: The prefix for the key used for the document on couchbase. Default: migrations
keySeparator : the separator used in the key. Default |
bucket.name: The name of the bucket. Default default
bucket.password: The password for the bucket. Default null

Exposed client

The adapter expose the following properties in the client paramter of your migrations:

  • db Which is a reference to the datasource
  • executionByQueries A functions to execute N1ql queries easily as explained here

Migration template

The default migration template show you plenty of examples to use the adapter at its best. If you need just to execute a series of N1ql queries for your migrations you can do as in the example below

'use strict';

let migrationQueries = [
    'INSERT INTO $1 (KEY, VALUE) VALUES ("my_key", { "productId": "lemonade", "color":"green"})'
];

let rollbackQueries = [
    'DELETE FROM $1 WHERE productId="lemonade";'
];

exports.migrate = function(client, done) {
    client.executionByQueries(migrationQueries, done);
};

exports.rollback = function(client, done) {
    client.executionByQueries(rollbackQueries, done);
};

In this case $1 will be substituted with the bucket name. You can find others options on the default template's comments

Datasource

The db object exposed in the client is an instance of the connector used internally. It expose the following methods

getEngine(): returns the couchbase driver instance
getBucket(): returns an instance the the bucket object as exposed by the driver

Running test

run east tests with this adapter

License

MIT