UNPKG

@cyber-rom/nestjs-scylladb

Version:

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

86 lines 3.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IndexColumn = exports.UpdateDateColumn = exports.CreateDateColumn = exports.VersionColumn = exports.GeneratedUUidColumn = exports.Column = void 0; const common_1 = require("@nestjs/common"); const listeners_1 = require("./listeners"); const db_utils_1 = require("../utils/db.utils"); const decorator_utils_1 = require("../utils/decorator.utils"); function Column(options) { return (target, propertyName) => { (0, decorator_utils_1.addAttribute)(target, propertyName, options); }; } exports.Column = Column; function GeneratedUUidColumn(type = 'uuid', name) { return (target, propertyName) => { if ((0, decorator_utils_1.hasAttribute)(target, propertyName)) { common_1.Logger.warn(`Already exist attribute for property`, undefined, 'ScyllaModule'); } Column({ name, type, default: { $db_function: type === 'timeuuid' ? 'now()' : 'uuid()' }, })(target, propertyName); (0, listeners_1.BeforeSave)()(target, propertyName, { value: (...args) => { const instance = args[0]; if (instance !== null && !instance[propertyName]) { instance[propertyName] = type === 'timeuuid' ? (0, db_utils_1.timeuuid)() : (0, db_utils_1.uuid)(); } }, }); }; } exports.GeneratedUUidColumn = GeneratedUUidColumn; function VersionColumn(columnName) { return (target, propertyName) => { if ((0, decorator_utils_1.hasAttribute)(target, propertyName)) { common_1.Logger.warn(`Already exist attribute for property (version column)`, undefined, 'ScyllaModule'); } if (columnName) { (0, decorator_utils_1.setTransformMapping)(target, propertyName, columnName); } (0, decorator_utils_1.addOptions)(target, { options: { versions: { key: columnName || propertyName } } }); }; } exports.VersionColumn = VersionColumn; function CreateDateColumn(columnName) { return (target, propertyName) => { if ((0, decorator_utils_1.hasAttribute)(target, propertyName)) { common_1.Logger.warn(`Already exist attribute for property (create date column)`, undefined, 'ScyllaModule'); } if (columnName) { (0, decorator_utils_1.setTransformMapping)(target, propertyName, columnName); } (0, decorator_utils_1.addOptions)(target, { options: { timestamps: { createdAt: columnName || propertyName } }, }); }; } exports.CreateDateColumn = CreateDateColumn; function UpdateDateColumn(columnName) { return (target, propertyName) => { if ((0, decorator_utils_1.hasAttribute)(target, propertyName)) { common_1.Logger.warn(`Already exist attribute for property (update date column)`, undefined, 'ScyllaModule'); } if (columnName) { (0, decorator_utils_1.setTransformMapping)(target, propertyName, columnName); } (0, decorator_utils_1.addOptions)(target, { options: { timestamps: { updatedAt: columnName || propertyName } }, }); }; } exports.UpdateDateColumn = UpdateDateColumn; function IndexColumn() { return (target, propertyName) => { const columnName = (0, decorator_utils_1.getColumnName)(target, propertyName); const { indexes = [] } = (0, decorator_utils_1.getOptions)(target) || { indexes: [] }; if (indexes.some((value) => value === columnName)) { return; } (0, decorator_utils_1.addOptions)(target, { indexes: [...indexes, columnName] }); }; } exports.IndexColumn = IndexColumn; //# sourceMappingURL=column.decorator.js.map