UNPKG

coffee-core

Version:

Coffee IT API core library

33 lines (27 loc) 1.15 kB
import { ClassConstructor, plainToClass } from 'class-transformer'; import { Logger, LoggerService } from '@nestjs/common'; import { ValidationMiddleware } from './validation/validation-middleware'; export class ConsumeHandler { private validationMiddleware: ValidationMiddleware; private readonly logger: LoggerService = new Logger(ConsumeHandler.name); constructor( public readonly bindingKey: string, private onConsume: (message: any) => Promise<void>, private messageClass: ClassConstructor<any>, private enableLogging = true, ) { } public async consume(message: any): Promise<void> { const transformedMessage = await plainToClass(this.messageClass, message); if (this.validationMiddleware) { await this.validationMiddleware.handle(transformedMessage, this.bindingKey); } if (this.enableLogging) { this.logger.debug(`Got an event on ${this.bindingKey} with payload: ${JSON.stringify(message, null, 2)}`); } await this.onConsume(transformedMessage); } public setValidationMiddleware(middleware: ValidationMiddleware): void { this.validationMiddleware = middleware; } }