UNPKG

@dolittle/sdk.aggregates

Version:

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

35 lines 2.88 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.AggregateRootsBuilder = void 0; const aggregateRootDecorator_1 = require("../aggregateRootDecorator"); const IAggregateRootsBuilder_1 = require("./IAggregateRootsBuilder"); const AggregateRootModelId_1 = require("../AggregateRootModelId"); /** * Represents a builder for registering instances of {@link AggregateRootType} from implementations of {@link AggregateRoot}. */ class AggregateRootsBuilder extends IAggregateRootsBuilder_1.IAggregateRootsBuilder { /** * Initialises a new instance of the {@link AggregateRootsBuilder} class. * @param {IModelBuilder} _modelBuilder - For binding aggregate root types to identifiers. * @param {IClientBuildResults} _buildResults - For keeping track of build results. */ constructor(_modelBuilder, _buildResults) { super(); this._modelBuilder = _modelBuilder; this._buildResults = _buildResults; } /** @inheritdoc */ register(type) { if (!(0, aggregateRootDecorator_1.isDecoratedAggregateRootType)(type)) { this._buildResults.addFailure(`The aggregate root class ${type.name} is not decorated as an aggregate root`, `Add the @${aggregateRootDecorator_1.aggregateRoot.name} decorator to the class`); return this; } const identifier = new AggregateRootModelId_1.AggregateRootModelId((0, aggregateRootDecorator_1.getDecoratedAggregateRootType)(type)); this._modelBuilder.bindIdentifierToType(identifier, type); return this; } } exports.AggregateRootsBuilder = AggregateRootsBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdncmVnYXRlUm9vdHNCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLyIsInNvdXJjZXMiOlsiQnVpbGRlcnMvQWdncmVnYXRlUm9vdHNCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0MscUdBQXFHOzs7QUFNckcsc0VBQWlKO0FBQ2pKLHFFQUFrRTtBQUNsRSxrRUFBK0Q7QUFFL0Q7O0dBRUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLCtDQUFzQjtJQUM3RDs7OztPQUlHO0lBQ0gsWUFDcUIsYUFBNEIsRUFDNUIsYUFBa0M7UUFFbkQsS0FBSyxFQUFFLENBQUM7UUFIUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7SUFHdkQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixRQUFRLENBQVUsSUFBb0I7UUFDbEMsSUFBSSxDQUFDLElBQUEscURBQTRCLEVBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsNEJBQTRCLElBQUksQ0FBQyxJQUFJLHdDQUF3QyxFQUFDLFlBQVksc0NBQXNCLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1lBQzlLLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLDJDQUFvQixDQUFDLElBQUEsc0RBQTZCLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUF4QkQsc0RBd0JDIn0=