UNPKG

poseidon-cassandra

Version:

A future wrapper around the node-cassandra-cql driver using Poseidon

95 lines (83 loc) 2.55 kB
var Cassandra, Driver, Promise; Cassandra = require('cassandra-driver'); Promise = require('bluebird'); Driver = (function() { function Driver() { this._configuration = {}; this._connections = {}; return; } Driver.prototype.configure = function(connName, connConfig) { if (connConfig == null) { throw new Error('Configuration object required'); } this._configuration[connName] = connConfig; }; Driver.prototype.openConnection = function(connName, options) { var client, _connection; if (options == null) { options = {}; } if (this._configuration[connName] == null) { return Promise.reject(new Error('Connection not configured')); } if (this._connections[connName] != null) { return this._connections[connName]; } _connection = Promise.defer(); client = new Cassandra.Client(this._configuration[connName]); client.connect(function(err) { if (err != null) { return _connection.reject(err); } else { return _connection.resolve(client); } }); return this._connections[connName] = _connection.promise; }; Driver.prototype.closeConnection = function(connName) { var _defer, _this = this; if (this._connections[connName] == null) { return Promise.reject(new Error('Connection does not exist')); } _defer = Promise.pending(); this._connections[connName].then(function(client) { return client.shutdown(function(err, result) { if (err) { return _defer.reject(err); } delete _this._connections[connName]; return _defer.resolve(result); }); }); return _defer.promise; }; Driver.prototype.reset = function() { var connConfig, connName, _connections, _ref; _connections = []; _ref = this._configuration; for (connName in _ref) { connConfig = _ref[connName]; if (this._connections[connName] != null) { _connections.push(this.closeConnection(connName)); } delete this._configuration[connName]; } return Promise.all(_connections); }; Driver.prototype.shutdown = function() { var connConfig, connName, _connections, _ref; _connections = []; _ref = this._configuration; for (connName in _ref) { connConfig = _ref[connName]; if (this._connections[connName] != null) { _connections.push(this.closeConnection(connName)); } } return Promise.all(_connections); }; return Driver; })(); module.exports = Driver;