UNPKG

markin-couchbase

Version:

Markin Fork of Couchbase Node.js Client Library.

83 lines (73 loc) 2.08 kB
'use strict'; var connstr = require('./connstr'); var Bucket = require('./bucket'); var ClusterManager = require('./clustermgr'); /** * Represents a singular cluster containing your buckets. * * @param {string} [cnstr] The connection string for your cluster. * @param {Object} [options] * @param {string} [options.certpath] * The path to the certificate to use for SSL connections * @constructor * * @since 2.0.0 * @committed */ function Cluster(cnstr, options) { this.dsnObj = connstr.parse(cnstr); // Copy passed options into the connection string if (options instanceof Object) { for (var i in options) { if (options.hasOwnProperty(i)) { this.dsnObj.options[i] = encodeURIComponent(options[i]); } } } } /** * Open a bucket to perform operations. This will begin the handshake * process immediately and operations will complete later. Subscribe to * the `connect` event to be alerted when the connection is ready, though * be aware operations can be successfully queued before this. * * @param {string} [name] The name of the bucket to open. * @param {string} [password] Password for the bucket. * @param {Function} [callback] * Callback to invoke on connection success or failure. * @returns {Bucket} * * @since 2.0.0 * @committed */ Cluster.prototype.openBucket = function(name, password, callback) { if (password instanceof Function) { callback = arguments[1]; password = ''; } var bucketDsnObj = connstr.normalize(this.dsnObj); bucketDsnObj.bucket = name; this.dsnObj = bucketDsnObj; var bucket = new Bucket({ dsnObj: bucketDsnObj, username: name, password: password }); if (callback) { bucket.on('connect', callback); bucket.on('error', callback); } return bucket; }; /** * Creates a manager allowing the management of a Couchbase cluster. * * @returns {ClusterManager} * * @since 2.0.0 * @committed */ Cluster.prototype.manager = function(username, password) { return new ClusterManager(this, username, password); }; module.exports = Cluster;