UNPKG

@iaminfinity/express-cassandra

Version:

Nest - modern, fast, powerful node.js web framework (@express-cassandra)

65 lines 2.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const decorator_utils_1 = require("../utils/decorator.utils"); const listeners_1 = require("./listeners"); const db_utils_1 = require("../utils/db.utils"); function Column(options) { return (target, propertyName) => { decorator_utils_1.addAttribute(target, propertyName, options); }; } exports.Column = Column; function GeneratedUUidColumn(type = 'uuid') { return (target, propertyName) => { const fn = { value: (...args) => { const instance = args[0]; if (instance !== null && !instance[propertyName]) { instance[propertyName] = type === 'timeuuid' ? db_utils_1.timeuuid() : db_utils_1.uuid(); } }, }; Column({ type, default: { $db_function: type === 'timeuuid' ? 'now()' : 'uuid()' }, })(target, propertyName); listeners_1.BeforeSave()(target, propertyName, fn); }; } exports.GeneratedUUidColumn = GeneratedUUidColumn; function VersionColumn() { return (target, propertyName) => { decorator_utils_1.addOptions(target, { options: { versions: { key: propertyName } } }); }; } exports.VersionColumn = VersionColumn; function CreateDateColumn() { return (target, propertyName) => { decorator_utils_1.addOptions(target, { options: { timestamps: { createdAt: propertyName } }, }); }; } exports.CreateDateColumn = CreateDateColumn; function UpdateDateColumn() { return (target, propertyName) => { decorator_utils_1.addOptions(target, { options: { timestamps: { updatedAt: propertyName } }, }); }; } exports.UpdateDateColumn = UpdateDateColumn; function IndexColumn() { return (target, propertyName) => { let { indexes } = decorator_utils_1.getOptions(target); indexes = indexes || []; const isAdded = indexes.some(value => value === propertyName); if (isAdded) { return; } indexes.push(propertyName); decorator_utils_1.addOptions(target, { indexes }); }; } exports.IndexColumn = IndexColumn; //# sourceMappingURL=column.decorator.js.map