@goatlab/fluent
Version:
Readable query Interface & API generator for TS and Node
29 lines (28 loc) • 1.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModelMetadataHelper = exports.MODEL_WITH_PROPERTIES_KEY = exports.MODEL_PROPERTIES_KEY = exports.MODEL_KEY = void 0;
const metadata_1 = require("@loopback/metadata");
const model_1 = require("./model");
const RELATIONS_KEY = 'loopback:relations';
exports.MODEL_KEY = metadata_1.MetadataAccessor.create('loopback:model');
exports.MODEL_PROPERTIES_KEY = metadata_1.MetadataAccessor.create('loopback:model-properties');
exports.MODEL_WITH_PROPERTIES_KEY = metadata_1.MetadataAccessor.create('loopback:model-and-properties');
class ModelMetadataHelper {
static getModelMetadata(target, options) {
const classDef = metadata_1.MetadataInspector.getClassMetadata(exports.MODEL_WITH_PROPERTIES_KEY, target, { ...options, ownMetadataOnly: true });
if (classDef) {
return classDef;
}
const modelMeta = metadata_1.MetadataInspector.getClassMetadata(exports.MODEL_KEY, target, options);
if (!modelMeta) {
return {};
}
const meta = new model_1.ModelDefinition({ ...modelMeta });
Object.assign(meta, modelMeta);
meta.properties = Object.assign(meta.properties, metadata_1.MetadataInspector.getAllPropertyMetadata(exports.MODEL_PROPERTIES_KEY, target.prototype, options));
meta.relations = Object.assign(meta.relations, metadata_1.MetadataInspector.getAllPropertyMetadata(RELATIONS_KEY, target.prototype, options));
metadata_1.MetadataInspector.defineMetadata(exports.MODEL_WITH_PROPERTIES_KEY.key, meta, target);
return meta;
}
}
exports.ModelMetadataHelper = ModelMetadataHelper;