UNPKG

@goatlab/fluent

Version:

Readable query Interface & API generator for TS and Node

29 lines (28 loc) 1.68 kB
"use strict"; 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;