@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
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.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=