miter
Version:
A typescript web framework based on ExpressJs based loosely on SailsJs
32 lines • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const belongs_to_1 = require("../../../metadata/orm/associations/belongs-to");
function isStaticModelT(test) {
return test && !!test.db;
}
function isForeignModelSource(test) {
return test && (isStaticModelT(test) || !!test.modelName || !!test.tableName || typeof test === 'function');
}
function BelongsTo(propMeta) {
let meta = {};
if (isForeignModelSource(propMeta))
meta = { foreignModel: propMeta };
else if (propMeta)
meta = propMeta;
return function (model, propertyName) {
if (!isForeignModelSource(meta.foreignModel)) {
meta.foreignModel = Reflect.getMetadata('design:type', model, propertyName);
if (meta.foreignModel === Object)
meta.foreignModel = undefined;
else if (!isStaticModelT(meta.foreignModel))
throw new Error(`Cannot infer relation type for belongs-to association ${model.name || model}.${propertyName}.`);
}
meta.as = propertyName;
let props = Reflect.getOwnMetadata(belongs_to_1.ModelBelongsToAssociationsSym, model) || [];
props.push(propertyName);
Reflect.defineMetadata(belongs_to_1.ModelBelongsToAssociationsSym, props, model);
Reflect.defineMetadata(belongs_to_1.BelongsToMetadataSym, meta, model, propertyName);
};
}
exports.BelongsTo = BelongsTo;
//# sourceMappingURL=belongs-to.decorator.js.map