@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
JavaScript
;
// 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