redink
Version:
RethinkDB model layer
49 lines (35 loc) • 5.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _hasOwnProperty = require('./hasOwnProperty');
var _hasOwnProperty2 = _interopRequireDefault(_hasOwnProperty);
var _queries = require('../queries');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable no-param-reassign */
exports.default = function (record, schema, id) {
var syncRelationshipsArray = [];
Object.keys(schema.relationships).forEach(function (relationship) {
var relationshipObject = schema.relationships[relationship];
var field = relationshipObject.field;
var relation = relationshipObject.relation;
var inverse = relationshipObject.inverse;
var inverseType = inverse.type;
var inverseField = inverse.field;
var inverseRelation = inverse.relation;
var data = record[field];
var queryToPush = void 0;
if ((0, _hasOwnProperty2.default)(record, field)) {
if (inverseRelation === 'hasMany') {
var dataCoercedToArray = Array.isArray(data) ? data : [data];
queryToPush = (0, _queries.pushIdToInverseField)(inverseType, inverseField, [], dataCoercedToArray, id);
}
if (inverseRelation === 'hasOne') {
queryToPush = relation === 'hasMany' ? (0, _queries.putIdToManyRecordsField)(inverseType, data, inverseField, id) : (0, _queries.putIdToRecordField)(inverseType, data, inverseField, id);
}
if (queryToPush) syncRelationshipsArray.push(queryToPush);
}
});
return syncRelationshipsArray;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zeW5jUmVsYXRpb25zaGlwcy5qcyJdLCJuYW1lcyI6WyJyZWNvcmQiLCJzY2hlbWEiLCJpZCIsInN5bmNSZWxhdGlvbnNoaXBzQXJyYXkiLCJPYmplY3QiLCJrZXlzIiwicmVsYXRpb25zaGlwcyIsImZvckVhY2giLCJyZWxhdGlvbnNoaXBPYmplY3QiLCJyZWxhdGlvbnNoaXAiLCJmaWVsZCIsInJlbGF0aW9uIiwiaW52ZXJzZSIsImludmVyc2VUeXBlIiwidHlwZSIsImludmVyc2VGaWVsZCIsImludmVyc2VSZWxhdGlvbiIsImRhdGEiLCJxdWVyeVRvUHVzaCIsImRhdGFDb2VyY2VkVG9BcnJheSIsIkFycmF5IiwiaXNBcnJheSIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBOzs7O0FBRUE7Ozs7QUFIQTtrQkFTZSxVQUFDQSxNQUFELEVBQVNDLE1BQVQsRUFBaUJDLEVBQWpCLEVBQXdCO0FBQ3JDLE1BQU1DLHlCQUF5QixFQUEvQjs7QUFFQUMsU0FBT0MsSUFBUCxDQUFZSixPQUFPSyxhQUFuQixFQUFrQ0MsT0FBbEMsQ0FBMEMsd0JBQWdCO0FBQ3hELFFBQU1DLHFCQUFxQlAsT0FBT0ssYUFBUCxDQUFxQkcsWUFBckIsQ0FBM0I7QUFEd0QsUUFFaERDLEtBRmdELEdBRW5CRixrQkFGbUIsQ0FFaERFLEtBRmdEO0FBQUEsUUFFekNDLFFBRnlDLEdBRW5CSCxrQkFGbUIsQ0FFekNHLFFBRnlDO0FBQUEsUUFFL0JDLE9BRitCLEdBRW5CSixrQkFGbUIsQ0FFL0JJLE9BRitCO0FBQUEsUUFHMUNDLFdBSDBDLEdBR3NCRCxPQUh0QixDQUdoREUsSUFIZ0Q7QUFBQSxRQUd0QkMsWUFIc0IsR0FHc0JILE9BSHRCLENBRzdCRixLQUg2QjtBQUFBLFFBR0VNLGVBSEYsR0FHc0JKLE9BSHRCLENBR1JELFFBSFE7OztBQUt4RCxRQUFNTSxPQUFPakIsT0FBT1UsS0FBUCxDQUFiOztBQUVBLFFBQUlRLG9CQUFKOztBQUVBLFFBQUksOEJBQWVsQixNQUFmLEVBQXVCVSxLQUF2QixDQUFKLEVBQW1DO0FBQ2pDLFVBQUlNLG9CQUFvQixTQUF4QixFQUFtQztBQUNqQyxZQUFNRyxxQkFBcUJDLE1BQU1DLE9BQU4sQ0FBY0osSUFBZCxJQUFzQkEsSUFBdEIsR0FBNkIsQ0FBQ0EsSUFBRCxDQUF4RDtBQUNBQyxzQkFBYyxtQ0FBcUJMLFdBQXJCLEVBQWtDRSxZQUFsQyxFQUFnRCxFQUFoRCxFQUFvREksa0JBQXBELEVBQXdFakIsRUFBeEUsQ0FBZDtBQUNEOztBQUVELFVBQUljLG9CQUFvQixRQUF4QixFQUFrQztBQUNoQ0Usc0JBQWNQLGFBQWEsU0FBYixHQUNWLHNDQUF3QkUsV0FBeEIsRUFBcUNJLElBQXJDLEVBQTJDRixZQUEzQyxFQUF5RGIsRUFBekQsQ0FEVSxHQUVWLGlDQUFtQlcsV0FBbkIsRUFBZ0NJLElBQWhDLEVBQXNDRixZQUF0QyxFQUFvRGIsRUFBcEQsQ0FGSjtBQUdEOztBQUVELFVBQUlnQixXQUFKLEVBQWlCZix1QkFBdUJtQixJQUF2QixDQUE0QkosV0FBNUI7QUFDbEI7QUFDRixHQXZCRDs7QUF5QkEsU0FBT2Ysc0JBQVA7QUFDRCxDIiwiZmlsZSI6InN5bmNSZWxhdGlvbnNoaXBzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCBoYXNPd25Qcm9wZXJ0eSBmcm9tICcuL2hhc093blByb3BlcnR5JztcblxuaW1wb3J0IHtcbiAgcHVzaElkVG9JbnZlcnNlRmllbGQsXG4gIHB1dElkVG9SZWNvcmRGaWVsZCxcbiAgcHV0SWRUb01hbnlSZWNvcmRzRmllbGQsXG59IGZyb20gJy4uL3F1ZXJpZXMnO1xuXG5leHBvcnQgZGVmYXVsdCAocmVjb3JkLCBzY2hlbWEsIGlkKSA9PiB7XG4gIGNvbnN0IHN5bmNSZWxhdGlvbnNoaXBzQXJyYXkgPSBbXTtcblxuICBPYmplY3Qua2V5cyhzY2hlbWEucmVsYXRpb25zaGlwcykuZm9yRWFjaChyZWxhdGlvbnNoaXAgPT4ge1xuICAgIGNvbnN0IHJlbGF0aW9uc2hpcE9iamVjdCA9IHNjaGVtYS5yZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcF07XG4gICAgY29uc3QgeyBmaWVsZCwgcmVsYXRpb24sIGludmVyc2UgfSA9IHJlbGF0aW9uc2hpcE9iamVjdDtcbiAgICBjb25zdCB7IHR5cGU6IGludmVyc2VUeXBlLCBmaWVsZDogaW52ZXJzZUZpZWxkLCByZWxhdGlvbjogaW52ZXJzZVJlbGF0aW9uIH0gPSBpbnZlcnNlO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlY29yZFtmaWVsZF07XG5cbiAgICBsZXQgcXVlcnlUb1B1c2g7XG5cbiAgICBpZiAoaGFzT3duUHJvcGVydHkocmVjb3JkLCBmaWVsZCkpIHtcbiAgICAgIGlmIChpbnZlcnNlUmVsYXRpb24gPT09ICdoYXNNYW55Jykge1xuICAgICAgICBjb25zdCBkYXRhQ29lcmNlZFRvQXJyYXkgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtkYXRhXTtcbiAgICAgICAgcXVlcnlUb1B1c2ggPSBwdXNoSWRUb0ludmVyc2VGaWVsZChpbnZlcnNlVHlwZSwgaW52ZXJzZUZpZWxkLCBbXSwgZGF0YUNvZXJjZWRUb0FycmF5LCBpZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnZlcnNlUmVsYXRpb24gPT09ICdoYXNPbmUnKSB7XG4gICAgICAgIHF1ZXJ5VG9QdXNoID0gcmVsYXRpb24gPT09ICdoYXNNYW55J1xuICAgICAgICAgID8gcHV0SWRUb01hbnlSZWNvcmRzRmllbGQoaW52ZXJzZVR5cGUsIGRhdGEsIGludmVyc2VGaWVsZCwgaWQpXG4gICAgICAgICAgOiBwdXRJZFRvUmVjb3JkRmllbGQoaW52ZXJzZVR5cGUsIGRhdGEsIGludmVyc2VGaWVsZCwgaWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAocXVlcnlUb1B1c2gpIHN5bmNSZWxhdGlvbnNoaXBzQXJyYXkucHVzaChxdWVyeVRvUHVzaCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gc3luY1JlbGF0aW9uc2hpcHNBcnJheTtcbn07XG4iXX0=