UNPKG

reshine

Version:

Let's take the sunshine path with RethinkDB

231 lines (196 loc) 5.83 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var r = _interopDefault(require('rethinkdb')); var mapObj = _interopDefault(require('map-obj')); var exists = (function (dbName) { return function (connection) { return r.dbList().run(connection).then(function (list) { if (list.indexOf(dbName) >= 0) { return Promise.resolve(true); } return Promise.resolve(false); }); }; }); var create = (function (dbName) { return function (connection) { return exists(dbName)(connection).then(function (doesExist) { if (!doesExist) { return r.dbCreate(dbName).run(connection); } return Promise.resolve(); }); }; }); var drop = (function (dbName) { return function (connection) { return exists(dbName)(connection).then(function (doesExist) { if (doesExist) { return r.dbDrop(dbName).run(connection); } return Promise.resolve(); }); }; }); var exists$1 = (function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).tableList().run(connection).then(function (list) { if (list.indexOf(tableName) >= 0) { return Promise.resolve(true); } return Promise.resolve(false); }); }; }; }); var create$1 = (function (tableName) { return function (dbName) { return function (connection) { return exists$1(tableName)(dbName)(connection).then(function (doesExist) { if (!doesExist) { return r.db(dbName).tableCreate(tableName).run(connection); } return Promise.resolve(); }); }; }; }); var drop$1 = (function (tableName) { return function (dbName) { return function (connection) { return exists$1(tableName)(dbName)(connection).then(function (doesExist) { if (doesExist) { return r.db(dbName).tableDrop(tableName).run(connection); } return Promise.resolve(); }); }; }; }); var filter = function (toFilter) { return function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).table(tableName).filter(toFilter).run(connection); }; }; }; }; filter.toArray = function (toFilter) { return function (tableName) { return function (dbName) { return function (connection) { return filter(toFilter)(tableName)(dbName)(connection).then(function (filtered) { return filtered.toArray(); }); }; }; }; }; var find = (function (id) { return function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).table(tableName).get(id).run(connection); }; }; }; }); var insert = (function (content) { return function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).table(tableName).insert(content).run(connection); }; }; }; }); var merge = (function (id, content) { return function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).table(tableName).get(id).merge(content).run(connection); }; }; }; }); var remove = (function (id) { return function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).table(tableName).get(id).delete().run(connection); }; }; }; }); var update = (function (id, content) { return function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).table(tableName).get(id).update(content).run(connection); }; }; }; }); var replace = (function (id, content) { return function (tableName) { return function (dbName) { return function (connection) { return r.db(dbName).table(tableName).get(id).replace(content).run(connection); }; }; }; }); var doc = { filter: filter, find: find, insert: insert, merge: merge, remove: remove, update: update, replace: replace }; var select$1 = function (tableName) { return function (dbName) { return function (connection) { var docMethods = mapObj(doc, function (key, value) { return [key, function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return value.apply(doc, args)(tableName)(dbName)(connection); }]; }); return create$1(tableName)(dbName)(connection).then(function (result) { docMethods.result = result; // TODO: Handle `filter.toArray` in a more generic fashion docMethods.filter.toArray = function (toFilter) { return doc.filter.toArray.call(doc, toFilter)(tableName)(dbName)(connection); }; return docMethods; }); }; }; }; select$1.create = create$1; select$1.drop = drop$1; select$1.exists = exists$1; var select = function (dbName) { return function (connection) { return create(dbName)(connection).then(function (result) { return { result: result, table: function (tableName) { return select$1(tableName)(dbName)(connection); } }; }); }; }; select.create = create; select.drop = drop; select.exists = exists; var connect = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return r.connect.apply(r, args); }; exports.database = select; exports.table = select$1; exports.doc = doc; exports.connect = connect;