UNPKG

gambit-decorators

Version:
79 lines (78 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Module = exports.Controller = exports.Service = exports.Message = exports.Event = void 0; const common_1 = require("@nestjs/common"); const microservices_1 = require("@nestjs/microservices"); const microservices_2 = require("@nestjs/microservices"); const common_2 = require("@nestjs/common"); const microservices_3 = require("@nestjs/microservices"); /** * Decorator used to dynamically set the message queue pattern based on the class and method name * @param target * @param propertyKey * @param descriptor * @returns */ const Event = (target, propertyKey, descriptor) => { let pattern = { provider: target.constructor.name, cmd: propertyKey }; return (0, microservices_1.EventPattern)(pattern)(target, propertyKey, descriptor); }; exports.Event = Event; /** * Decorator used to dynamically set the message queue pattern based on the class and method name * @returns */ const Message = (target, propertyKey, descriptor) => { let pattern = { provider: target.constructor.name, cmd: propertyKey }; return (0, microservices_1.MessagePattern)(pattern)(target, propertyKey, descriptor); }; exports.Message = Message; class BaseLogger { // TODO: Add logic to log externally constructor() { this.logger = new common_2.Logger(this.constructor.name); } } class Service extends BaseLogger { constructor() { super(); this.logger = new common_2.Logger(this.constructor.name); this.emitter = microservices_3.ClientProxyFactory.create({ transport: microservices_2.Transport.RMQ, options: { urls: ['amqp://admin:admin@localhost:5672'], queue: 'action_queue', queueOptions: { durable: false }, }, }); } } exports.Service = Service; const Controller = (constructor) => { return (0, common_1.Controller)(constructor.name)(constructor); }; exports.Controller = Controller; const Module = (params) => { return function (constructor) { constructor.prototype.name = constructor.name; constructor.prototype.metadata = params.metadata; constructor.prototype.functions = []; for (const controller of (params.controllers || [])) { let functionsArr = Object.getOwnPropertyNames(controller.prototype) .filter(func => func !== 'constructor') .map(func => ({ service: constructor.name, cmd: func, parameters: '' })); constructor.prototype.functions.push(...functionsArr); } return (0, common_1.Module)({ controllers: params.controllers, providers: params.providers })(constructor); }; }; exports.Module = Module;