UNPKG

hydrate-mongodb

Version:
65 lines (64 loc) 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var persistenceError_1 = require("./persistenceError"); var Reference = (function () { function Reference(mapping, _id) { this.mapping = mapping; this._id = _id; if (_id != null) { this.id = _id.toString(); } } Reference.prototype.fetch = function (session, callback) { if (!this.mapping) { callback(new persistenceError_1.PersistenceError("Object type is not mapped as an entity.")); return; } if (this._id == null) { callback(new persistenceError_1.PersistenceError("Missing or invalid identifier.")); return; } session.getPersister(this.mapping).findOneById(this._id, callback); }; Reference.prototype.equals = function (other) { return Reference.areEqual(this, other); }; Reference.areEqual = function (value1, value2) { if (value1 == value2) return true; if (value1 == null || value2 == null) return false; if (Reference.isReference(value1)) { var mapping1 = value1.mapping; var id1 = value1._id; } else { var id1 = value1._id; } if (Reference.isReference(value2)) { var mapping2 = value2.mapping; var id2 = value2._id; } else { var id2 = value2._id; } if (mapping1 == null && mapping2 == null) return false; if (id1 == null || id2 == null) return false; return (mapping1 || mapping2).inheritanceRoot.identity.areEqual(id1, id2); }; Reference.isReference = function (obj) { return obj instanceof Reference; }; Reference.fetch = function (session, obj, callback) { if (Reference.isReference(obj)) { obj.fetch(session, callback); } else { callback(null, obj); } }; return Reference; }()); exports.Reference = Reference;