@dolittle/sdk.events.handling
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
81 lines • 6.42 kB
JavaScript
"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.EventHandlerBuilder = void 0;
const sdk_events_1 = require("@dolittle/sdk.events");
const EventHandler_1 = require("../EventHandler");
const EventHandlerAlias_1 = require("../EventHandlerAlias");
const EventHandlerModelId_1 = require("../EventHandlerModelId");
const EventHandlerMethodsBuilder_1 = require("./EventHandlerMethodsBuilder");
const IEventHandlerBuilder_1 = require("./IEventHandlerBuilder");
/**
* Represents an implementation of {@link IEventHandlerBuilder}.
*/
class EventHandlerBuilder extends IEventHandlerBuilder_1.IEventHandlerBuilder {
/**
* Initializes a new instance of {@link EventHandlerBuilder}.
* @param {EventHandlerId} _eventHandlerId - The unique identifier of the event handler to build for.
* @param {IModelBuilder} _modelBuilder - For binding the event handler to its identifier.
*/
constructor(_eventHandlerId, _modelBuilder) {
super();
this._eventHandlerId = _eventHandlerId;
this._modelBuilder = _modelBuilder;
this._scopeId = sdk_events_1.ScopeId.default;
this._modelBuilder.bindIdentifierToProcessorBuilder(this._modelId, this);
}
/** @inheritdoc */
partitioned() {
this._partitioned = true;
this._methodsBuilder = new EventHandlerMethodsBuilder_1.EventHandlerMethodsBuilder(this._eventHandlerId);
return this._methodsBuilder;
}
/** @inheritdoc */
unpartitioned() {
this._partitioned = false;
this._methodsBuilder = new EventHandlerMethodsBuilder_1.EventHandlerMethodsBuilder(this._eventHandlerId);
return this._methodsBuilder;
}
/** @inheritdoc */
inScope(scopeId) {
this._modelBuilder.unbindIdentifierFromProcessorBuilder(this._modelId, this);
this._scopeId = sdk_events_1.ScopeId.from(scopeId);
this._modelBuilder.bindIdentifierToProcessorBuilder(this._modelId, this);
return this;
}
/** @inheritdoc */
withAlias(alias) {
this._alias = EventHandlerAlias_1.EventHandlerAlias.from(alias);
return this;
}
/** @inheritdoc */
equals(other) {
return this === other;
}
/**
* Builds the event handler.
* @param {IEventTypes} eventTypes - For event types resolution.
* @param {IServiceProviderBuilder} bindings - For registering the bindings for the event handler class.
* @param {IClientBuildResults} results - For keeping track of build results.
* @returns {IEventHandler | undefined} The built event handler if successful.
*/
build(eventTypes, bindings, results) {
const eventTypeToMethods = new sdk_events_1.EventTypeMap();
if (this._methodsBuilder === undefined) {
results.addFailure(`Failed to build event handler ${this._eventHandlerId}. No event handler methods are configured for event handler`);
return;
}
const allMethodsBuilt = this._methodsBuilder.tryAddEventHandlerMethods(eventTypes, eventTypeToMethods, results);
if (!allMethodsBuilt) {
results.addFailure(`Could not build event handler ${this._eventHandlerId}`);
return;
}
return new EventHandler_1.EventHandler(this._eventHandlerId, this._scopeId, this._partitioned, eventTypeToMethods, this._alias);
}
get _modelId() {
return new EventHandlerModelId_1.EventHandlerModelId(this._eventHandlerId, this._scopeId);
}
}
exports.EventHandlerBuilder = EventHandlerBuilder;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRIYW5kbGVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIkJ1aWxkZXJzL0V2ZW50SGFuZGxlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxxR0FBcUc7OztBQU1yRyxxREFBMEU7QUFFMUUsa0RBQStDO0FBQy9DLDREQUFnRjtBQUVoRixnRUFBNkQ7QUFHN0QsNkVBQTBFO0FBQzFFLGlFQUE4RDtBQUc5RDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsMkNBQW9CO0lBTXpEOzs7O09BSUc7SUFDSCxZQUE2QixlQUErQixFQUFtQixhQUE0QjtRQUN2RyxLQUFLLEVBQUUsQ0FBQztRQURpQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBbUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFUbkcsYUFBUSxHQUFZLG9CQUFPLENBQUMsT0FBTyxDQUFDO1FBV3hDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksdURBQTBCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGFBQWE7UUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksdURBQTBCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxPQUFnQztRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixTQUFTLENBQUMsS0FBNEI7UUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNLENBQUMsS0FBVTtRQUNiLE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFVBQXVCLEVBQUUsUUFBaUMsRUFBRSxPQUE0QjtRQUMxRixNQUFNLGtCQUFrQixHQUFHLElBQUkseUJBQVksRUFBOEIsQ0FBQztRQUMxRSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQ3BDLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUNBQWlDLElBQUksQ0FBQyxlQUFlLDZEQUE2RCxDQUFDLENBQUM7WUFDdkksT0FBTztTQUNWO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNsQixPQUFPLENBQUMsVUFBVSxDQUFDLGlDQUFpQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztZQUM1RSxPQUFPO1NBQ1Y7UUFDRCxPQUFPLElBQUksMkJBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUVELElBQVksUUFBUTtRQUNoQixPQUFPLElBQUkseUNBQW1CLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztDQUNKO0FBekVELGtEQXlFQyJ9