reshine
Version:
Let's take the sunshine path with RethinkDB
231 lines (196 loc) • 5.83 kB
JavaScript
;
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;