UNPKG

@cyber-rom/nestjs-scylladb

Version:

Based on https://www.npmjs.com/package/@ouato/nestjs-express-cassandra With support columns name mapping

144 lines 6.58 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.addHookFunction = exports.addOptions = exports.setOptions = exports.getOptions = exports.addAttributeOptions = exports.addAttribute = exports.hasAttribute = exports.setTransformMapping = exports.setPropertyMapping = exports.setColumnMapping = exports.getPropertyName = exports.getColumnName = exports.getPropertiesMapper = exports.getColumnsMapper = exports.setAttributes = exports.getAttributes = exports.getEntityName = exports.setEntityName = exports.getEntity = exports.setEntity = void 0; require("reflect-metadata"); const common_1 = require("@nestjs/common"); const deep_merge_utils_1 = require("./deep-merge.utils"); const orm_constant_1 = require("../orm.constant"); function setEntity(target, entity) { Reflect.defineMetadata(orm_constant_1.ENTITY_METADATA, entity, target); } exports.setEntity = setEntity; function getEntity(target) { return Reflect.getMetadata(orm_constant_1.ENTITY_METADATA, target); } exports.getEntity = getEntity; function setEntityName(target, modelName) { Reflect.defineMetadata(orm_constant_1.ENTITY_NAME_KEY, modelName, target); } exports.setEntityName = setEntityName; function getEntityName(target) { return Reflect.getMetadata(orm_constant_1.ENTITY_NAME_KEY, target); } exports.getEntityName = getEntityName; function getAttributes(target) { const attributes = Reflect.getMetadata(orm_constant_1.ATTRIBUTE_KEY, target); if (attributes) { return Object.keys(attributes).reduce((copy, key) => { copy[key] = Object.assign({}, attributes[key]); return copy; }, {}); } } exports.getAttributes = getAttributes; function setAttributes(target, attributes) { Reflect.defineMetadata(orm_constant_1.ATTRIBUTE_KEY, Object.assign({}, attributes), target); } exports.setAttributes = setAttributes; function getColumnsMapper(target) { return Reflect.getMetadata(orm_constant_1.COLUMNS_MAPPER_KEY, target) || {}; } exports.getColumnsMapper = getColumnsMapper; function getPropertiesMapper(target) { return Reflect.getMetadata(orm_constant_1.PROPERTIES_MAPPER_KEY, target) || {}; } exports.getPropertiesMapper = getPropertiesMapper; function getColumnName(target, propertyName, def) { const mapper = getColumnsMapper(target); if (propertyName in mapper) { return mapper[propertyName]; } return def || propertyName; } exports.getColumnName = getColumnName; function getPropertyName(target, columnName, def) { const mapper = getPropertiesMapper(target); if (columnName in mapper) { return mapper[columnName]; } return def || columnName; } exports.getPropertyName = getPropertyName; function setColumnMapping(target, propertyName, columnName) { if (!propertyName || !columnName || propertyName === columnName) { return; } const mapper = getColumnsMapper(target); if (propertyName in mapper && mapper[propertyName]) { common_1.Logger.warn(`Columns mapper already constrain propertyName "${propertyName}"`, undefined, 'ScyllaModule'); } Reflect.defineMetadata(orm_constant_1.COLUMNS_MAPPER_KEY, Object.assign(Object.assign({}, mapper), { [propertyName]: columnName }), target); } exports.setColumnMapping = setColumnMapping; function setPropertyMapping(target, propertyName, columnName) { if (!propertyName || !columnName || propertyName === columnName) { return; } const mapper = getPropertiesMapper(target); if (columnName in mapper && mapper[propertyName]) { common_1.Logger.warn(`Columns mapper already constrain columnName "${columnName}"`, undefined, 'ScyllaModule'); } Reflect.defineMetadata(orm_constant_1.PROPERTIES_MAPPER_KEY, Object.assign(Object.assign({}, mapper), { [columnName]: propertyName }), target); } exports.setPropertyMapping = setPropertyMapping; function setTransformMapping(target, propertyName, columnName) { setPropertyMapping(target, propertyName, columnName); setColumnMapping(target, propertyName, columnName); } exports.setTransformMapping = setTransformMapping; function hasAttribute(target, propertyName) { const attributes = getAttributes(target), columnName = getColumnName(target, propertyName); return attributes && columnName in attributes && attributes[columnName]; } exports.hasAttribute = hasAttribute; function addAttribute(target, propertyName, _a) { var { name } = _a, options = __rest(_a, ["name"]); const attributes = getAttributes(target) || {}; if (name) { setTransformMapping(target, propertyName, name); } setAttributes(target, Object.assign(Object.assign({}, attributes), { [name || propertyName]: Object.assign({}, (options || {})) })); } exports.addAttribute = addAttribute; function addAttributeOptions(target, propertyName, _a) { var { name } = _a, options = __rest(_a, ["name"]); const attributes = getAttributes(target) || {}; const columnName = getColumnName(target, propertyName, name); if (columnName in attributes) { attributes[columnName] = (0, deep_merge_utils_1.mergeDeep)(attributes[columnName], options); } else { attributes[columnName] = options; } setAttributes(target, attributes); } exports.addAttributeOptions = addAttributeOptions; function getOptions(target) { return Object.assign({}, (Reflect.getMetadata(orm_constant_1.OPTIONS_KEY, target) || {})); } exports.getOptions = getOptions; function setOptions(target, options) { Reflect.defineMetadata(orm_constant_1.OPTIONS_KEY, Object.assign({}, options), target); } exports.setOptions = setOptions; function addOptions(target, options) { setOptions(target, (0, deep_merge_utils_1.mergeDeep)(getOptions(target) || {}, options)); } exports.addOptions = addOptions; const addHookFunction = (target, metadataKey) => { const funcLikeArray = Reflect.getMetadata(metadataKey, target) || []; return (...args) => funcLikeArray.map((funcLike) => funcLike(...args)); }; exports.addHookFunction = addHookFunction; //# sourceMappingURL=decorator.utils.js.map