UNPKG

@dolittle/sdk.aggregates

Version:

Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.

58 lines 5.55 kB
"use strict"; // Copyright (c) Dolittle. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. Object.defineProperty(exports, "__esModule", { value: true }); exports.AggregateRoots = void 0; const sdk_protobuf_1 = require("@dolittle/sdk.protobuf"); const sdk_services_1 = require("@dolittle/sdk.services"); const AggregateRoots_pb_1 = require("@dolittle/contracts/Runtime/Aggregates/AggregateRoots_pb"); /** * Represents a system that knows how to register Aggregate Roots with the Runtime. */ class AggregateRoots { /** * Initializes an instance of the {@link AggregateRoots} class. * @param {AggregateRootsClient} _client - The aggregate roots client. * @param {ExecutionContext} _executionContext - The execution context. * @param {Logger} _logger - The logger. */ constructor(_client, _executionContext, _logger) { this._client = _client; this._executionContext = _executionContext; this._logger = _logger; } /** * Registers aggregate roots. * @param {IAggregateRootTypes} aggregateRootTypes - The aggregate root types to register. * @param {Cancellation} cancellation - The cancellation. * @returns {Promise<void>} A {@link Promise} that represents the asynchronous operation. */ registerAllFrom(aggregateRootTypes, cancellation) { return Promise.all(aggregateRootTypes.getAll().map(eventType => this.sendRequest(eventType, cancellation))); } createRequest(aggregateRootType) { const result = new AggregateRoots_pb_1.AggregateRootAliasRegistrationRequest(); result.setAggregateroot(sdk_protobuf_1.Artifacts.toProtobuf(aggregateRootType)); result.setCallcontext(sdk_protobuf_1.ExecutionContexts.toCallContext(this._executionContext)); if (aggregateRootType.hasAlias()) { result.setAlias(aggregateRootType.alias.value); } return result; } async sendRequest(aggregateRootType, cancellation) { var _a, _b, _c, _d; const request = this.createRequest(aggregateRootType); this._logger.debug(`Registering Alias ${(_a = aggregateRootType.alias) === null || _a === void 0 ? void 0 : _a.value} for Aggregate Root ${aggregateRootType.id.value.toString()}`); try { const response = await (0, sdk_services_1.reactiveUnary)(this._client, this._client.registerAlias, request, cancellation).toPromise(); if (response.hasFailure()) { this._logger.warn(`An error occurred while registering Alias ${(_b = aggregateRootType.alias) === null || _b === void 0 ? void 0 : _b.value} for Aggregate Root ${aggregateRootType.id.value.toString()} because ${(_c = response.getFailure()) === null || _c === void 0 ? void 0 : _c.getReason()}`); } } catch (err) { this._logger.warn(`An error occurred while registering Alias ${(_d = aggregateRootType.alias) === null || _d === void 0 ? void 0 : _d.value} for Aggregate Root ${aggregateRootType.id.value.toString()}. Error ${err}`); } } } exports.AggregateRoots = AggregateRoots; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdncmVnYXRlUm9vdHMuanMiLCJzb3VyY2VSb290IjoiLi4vIiwic291cmNlcyI6WyJJbnRlcm5hbC9BZ2dyZWdhdGVSb290cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHFHQUFxRzs7O0FBS3JHLHlEQUFzRTtBQUV0RSx5REFBdUQ7QUFFdkQsZ0dBQWlIO0FBTWpIOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRXZCOzs7OztPQUtHO0lBQ0gsWUFDcUIsT0FBNkIsRUFDN0IsaUJBQW1DLEVBQ25DLE9BQWU7UUFGZixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDakMsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLGtCQUF1QyxFQUFFLFlBQTBCO1FBQy9FLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUE2QixDQUFDO0lBQzVJLENBQUM7SUFFTyxhQUFhLENBQUMsaUJBQW9DO1FBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUkseURBQXFDLEVBQUUsQ0FBQztRQUMzRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsd0JBQVMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxjQUFjLENBQUMsZ0NBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5QixNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFvQyxFQUFFLFlBQTBCOztRQUN0RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLE1BQUEsaUJBQWlCLENBQUMsS0FBSywwQ0FBRSxLQUFLLHVCQUF1QixpQkFBaUIsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0SSxJQUFJO1lBQ0EsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDRCQUFhLEVBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEgsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxNQUFBLGlCQUFpQixDQUFDLEtBQUssMENBQUUsS0FBSyx1QkFBdUIsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxNQUFBLFFBQVEsQ0FBQyxVQUFVLEVBQUUsMENBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzlNO1NBQ0o7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxNQUFBLGlCQUFpQixDQUFDLEtBQUssMENBQUUsS0FBSyx1QkFBdUIsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzlLO0lBQ0wsQ0FBQztDQUNKO0FBOUNELHdDQThDQyJ9