eventstore-interconnect
Version:
Eventstore interconnector
69 lines • 3.87 kB
JavaScript
;
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.HttpDriverService = void 0;
const common_1 = require("@nestjs/common");
const node_eventstore_client_1 = require("node-eventstore-client");
const constants_1 = require("../../../constants");
const model_1 = require("../../../model/");
const safety_net_1 = require("../../../safety-net");
const connections_initializers_1 = require("../../../connections-initializers");
const logger_1 = require("../../../logger");
let HttpDriverService = class HttpDriverService {
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.tcp.host}:${this.connectionConfiguration.tcp.port}`);
}
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 jsonFormattedEvent = (0, node_eventstore_client_1.createJsonEventData)(event.metadata.eventId, event.data, event.metadata, event.metadata.eventType);
const client = this.connectionInitializer.getConnectedClient();
await client.appendToStream(event.metadata.eventStreamId, model_1.ExpectedVersion.Any, jsonFormattedEvent, this.credentials);
this.logger.debug(`Event (id: ${event.metadata.eventId}) written`);
}
};
HttpDriverService = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, common_1.Inject)(constants_1.CONNECTION_CONFIGURATION)),
__param(1, (0, common_1.Inject)(connections_initializers_1.TCP_EVENTSTORE_CLIENT_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])
], HttpDriverService);
exports.HttpDriverService = HttpDriverService;
//# sourceMappingURL=http-driver.service.js.map