UNPKG

eventstore-interconnect

Version:
78 lines 3.93 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GrpcDriverService = void 0; const common_1 = require("@nestjs/common"); const constants_1 = require("../../../constants"); const db_client_1 = require("@eventstore/db-client"); const safety_net_1 = require("../../../safety-net"); const connections_initializers_1 = require("../../../connections-initializers"); const constants_2 = require("../../constants"); const logger_1 = require("../../../logger"); let GrpcDriverService = class GrpcDriverService { constructor(connectionConfiguration, connectionInitializer, credentials, safetyNet, logger) { this.connectionConfiguration = connectionConfiguration; this.connectionInitializer = connectionInitializer; this.credentials = credentials; this.safetyNet = safetyNet; this.logger = logger; } async onModuleInit() { await this.connectionInitializer.init(); this.logger.log(`DRIVER : connected to ${this.connectionConfiguration.connectionString}`); } async writeEvent(event) { try { await this.tryToWriteEventAgainstAggressiveTimeout(event, constants_1.EVENT_WRITER_TIMEOUT_IN_MS); } catch (err) { this.logger.error(err.toString()); this.safetyNet.cannotWriteEventHook(event); } } async tryToWriteEventAgainstAggressiveTimeout(event, timeout) { const safety = setTimeout(() => { this.safetyNet.cannotWriteEventHook(event); }, timeout); await this.appendEventToStreamteEvent(event); clearTimeout(safety); } async appendEventToStreamteEvent(event) { this.logger.debug(`Trying to write ${event.metadata.eventType} (id: ${event.metadata.eventId}) on stream ${event.metadata.eventStreamId}`); const { data, metadata } = event; const formattedEvent = (0, db_client_1.jsonEvent)({ id: event.metadata.eventId, type: event.metadata.eventType, data, metadata, }); const client = this.connectionInitializer.getConnectedClient(); await client.appendToStream(event.metadata.eventStreamId, formattedEvent, { expectedRevision: constants_2.ANY, credentials: this.credentials, }); this.logger.debug(`Event (id: ${event.metadata.eventId}) written`); } }; GrpcDriverService = __decorate([ (0, common_1.Injectable)(), __param(0, (0, common_1.Inject)(constants_1.CONNECTION_CONFIGURATION)), __param(1, (0, common_1.Inject)(connections_initializers_1.GRPC_CONNECTION_INITIALIZER)), __param(2, (0, common_1.Inject)(constants_1.CREDENTIALS)), __param(3, (0, common_1.Inject)(safety_net_1.SAFETY_NET)), __param(4, (0, common_1.Inject)(logger_1.LOGGER)), __metadata("design:paramtypes", [Object, Object, Object, Object, common_1.Logger]) ], GrpcDriverService); exports.GrpcDriverService = GrpcDriverService; //# sourceMappingURL=grpc-driver.service.js.map