redink
Version:
RethinkDB model layer
41 lines (29 loc) • 4.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _rethinkdb = require('rethinkdb');
var _rethinkdb2 = _interopRequireDefault(_rethinkdb);
var _utils = require('./utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = function (type, ids, conn) {
if (!Array.isArray(ids)) {
throw new Error('Expected \'' + type + '\' relationship to be an \'array\' but got type \'' + (typeof ids === 'undefined' ? 'undefined' : _typeof(ids)) + '\'');
}
var throwIfNotValid = function throwIfNotValid(records) {
var validRecord = records.every(_utils.isRecordValid);
if (!validRecord) {
throw new Error('Expected a valid record of type \'' + type + '\' ' + 'but got an invalid record.');
}
};
var checkValidRecords = function checkValidRecords(records) {
if (records.length !== ids.length) {
throw new Error('Expected to have \'' + ids.length + '\' ids ' + ('but found \'' + records.length + '\' records of type \'' + type + '\'.'));
}
throwIfNotValid(records);
return true;
};
return _rethinkdb2.default.table(type).getAll(_rethinkdb2.default.args(ids)).coerceTo('array').run(conn).then(checkValidRecords);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25zdHJhaW50cy9jaGVja3MvY2hlY2tWYWxpZElkcy5qcyJdLCJuYW1lcyI6WyJ0eXBlIiwiaWRzIiwiY29ubiIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwidGhyb3dJZk5vdFZhbGlkIiwicmVjb3JkcyIsInZhbGlkUmVjb3JkIiwiZXZlcnkiLCJjaGVja1ZhbGlkUmVjb3JkcyIsImxlbmd0aCIsInRhYmxlIiwiZ2V0QWxsIiwiYXJncyIsImNvZXJjZVRvIiwicnVuIiwidGhlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O2tCQUVlLFVBQUNBLElBQUQsRUFBT0MsR0FBUCxFQUFZQyxJQUFaLEVBQXFCO0FBQ2xDLE1BQUksQ0FBQ0MsTUFBTUMsT0FBTixDQUFjSCxHQUFkLENBQUwsRUFBeUI7QUFDdkIsVUFBTSxJQUFJSSxLQUFKLGlCQUNTTCxJQURULGtFQUNxRUMsR0FEckUseUNBQ3FFQSxHQURyRSxVQUFOO0FBR0Q7O0FBRUQsTUFBTUssa0JBQWtCLFNBQWxCQSxlQUFrQixDQUFDQyxPQUFELEVBQWE7QUFDbkMsUUFBTUMsY0FBY0QsUUFBUUUsS0FBUixzQkFBcEI7O0FBRUEsUUFBSSxDQUFDRCxXQUFMLEVBQWtCO0FBQ2hCLFlBQU0sSUFBSUgsS0FBSixDQUNKLHVDQUFvQ0wsSUFBcEMsV0FDQSw0QkFGSSxDQUFOO0FBSUQ7QUFDRixHQVREOztBQVdBLE1BQU1VLG9CQUFvQixTQUFwQkEsaUJBQW9CLENBQUNILE9BQUQsRUFBYTtBQUNyQyxRQUFJQSxRQUFRSSxNQUFSLEtBQW1CVixJQUFJVSxNQUEzQixFQUFtQztBQUNqQyxZQUFNLElBQUlOLEtBQUosQ0FDSix3QkFBcUJKLElBQUlVLE1BQXpCLGlDQUNjSixRQUFRSSxNQUR0Qiw2QkFDa0RYLElBRGxELFNBREksQ0FBTjtBQUlEOztBQUVETSxvQkFBZ0JDLE9BQWhCO0FBQ0EsV0FBTyxJQUFQO0FBQ0QsR0FWRDs7QUFZQSxTQUFPLG9CQUFFSyxLQUFGLENBQVFaLElBQVIsRUFDSmEsTUFESSxDQUNHLG9CQUFFQyxJQUFGLENBQU9iLEdBQVAsQ0FESCxFQUVKYyxRQUZJLENBRUssT0FGTCxFQUdKQyxHQUhJLENBR0FkLElBSEEsRUFJSmUsSUFKSSxDQUlDUCxpQkFKRCxDQUFQO0FBS0QsQyIsImZpbGUiOiJjaGVja1ZhbGlkSWRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHIgZnJvbSAncmV0aGlua2RiJztcbmltcG9ydCB7IGlzUmVjb3JkVmFsaWQgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgKHR5cGUsIGlkcywgY29ubikgPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoaWRzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCAnJHt0eXBlfScgcmVsYXRpb25zaGlwIHRvIGJlIGFuICdhcnJheScgYnV0IGdvdCB0eXBlICcke3R5cGVvZiBpZHN9J2BcbiAgICApO1xuICB9XG5cbiAgY29uc3QgdGhyb3dJZk5vdFZhbGlkID0gKHJlY29yZHMpID0+IHtcbiAgICBjb25zdCB2YWxpZFJlY29yZCA9IHJlY29yZHMuZXZlcnkoaXNSZWNvcmRWYWxpZCk7XG5cbiAgICBpZiAoIXZhbGlkUmVjb3JkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFeHBlY3RlZCBhIHZhbGlkIHJlY29yZCBvZiB0eXBlICcke3R5cGV9JyBgICtcbiAgICAgICAgJ2J1dCBnb3QgYW4gaW52YWxpZCByZWNvcmQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2hlY2tWYWxpZFJlY29yZHMgPSAocmVjb3JkcykgPT4ge1xuICAgIGlmIChyZWNvcmRzLmxlbmd0aCAhPT0gaWRzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgdG8gaGF2ZSAnJHtpZHMubGVuZ3RofScgaWRzIGAgK1xuICAgICAgICBgYnV0IGZvdW5kICcke3JlY29yZHMubGVuZ3RofScgcmVjb3JkcyBvZiB0eXBlICcke3R5cGV9Jy5gXG4gICAgICApO1xuICAgIH1cblxuICAgIHRocm93SWZOb3RWYWxpZChyZWNvcmRzKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4gci50YWJsZSh0eXBlKVxuICAgIC5nZXRBbGwoci5hcmdzKGlkcykpXG4gICAgLmNvZXJjZVRvKCdhcnJheScpXG4gICAgLnJ1bihjb25uKVxuICAgIC50aGVuKGNoZWNrVmFsaWRSZWNvcmRzKTtcbn07XG4iXX0=