UNPKG

reshine

Version:

Let's take the sunshine path with RethinkDB

222 lines (190 loc) 5.56 kB
import r from 'rethinkdb'; import mapObj from '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); }; export { select as database, select$1 as table, doc, connect };