UNPKG

@dolittle/sdk.projections

Version:

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

46 lines 3.9 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.ProjectionsBuilder = void 0; const ProjectionId_1 = require("../ProjectionId"); const ProjectionBuilder_1 = require("./ProjectionBuilder"); const ProjectionClassBuilder_1 = require("./ProjectionClassBuilder"); const projectionDecorator_1 = require("./projectionDecorator"); const IProjectionsBuilder_1 = require("./IProjectionsBuilder"); const ProjectionModelId_1 = require("../ProjectionModelId"); /** * Represents an implementation of {@link IProjectionsBuilder}. */ class ProjectionsBuilder extends IProjectionsBuilder_1.IProjectionsBuilder { /** * Initialises a new instance of the {@link ProjectionsBuilder} class. * @param {IModelBuilder} _modelBuilder - For binding projections to identifiers. * @param {IClientBuildResults} _buildResults - For keeping track of build results. */ constructor(_modelBuilder, _buildResults) { super(); this._modelBuilder = _modelBuilder; this._buildResults = _buildResults; } /** @inheritdoc */ create(projectionId) { const identifier = ProjectionId_1.ProjectionId.from(projectionId); return new ProjectionBuilder_1.ProjectionBuilder(identifier, this._modelBuilder); } /** @inheritdoc */ register(type) { if (!(0, projectionDecorator_1.isDecoratedProjectionType)(type)) { this._buildResults.addFailure(`The projection class ${type.name} is not decorated as an projection`, `Add the @${projectionDecorator_1.projection.name} decorator to the class`); return this; } const projectionType = (0, projectionDecorator_1.getDecoratedProjectionType)(type); const identifier = new ProjectionModelId_1.ProjectionModelId(projectionType.projectionId, projectionType.scopeId); const builder = new ProjectionClassBuilder_1.ProjectionClassBuilder(projectionType); this._modelBuilder.bindIdentifierToType(identifier, type); this._modelBuilder.bindIdentifierToProcessorBuilder(identifier, builder); return this; } } exports.ProjectionsBuilder = ProjectionsBuilder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvamVjdGlvbnNCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLyIsInNvdXJjZXMiOlsiQnVpbGRlcnMvUHJvamVjdGlvbnNCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0MscUdBQXFHOzs7QUFPckcsa0RBQStDO0FBQy9DLDJEQUF3RDtBQUN4RCxxRUFBa0U7QUFDbEUsK0RBQWlJO0FBQ2pJLCtEQUE0RDtBQUU1RCw0REFBeUQ7QUFFekQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFtQixTQUFRLHlDQUFtQjtJQUN2RDs7OztPQUlHO0lBQ0gsWUFDcUIsYUFBNEIsRUFDNUIsYUFBa0M7UUFFbkQsS0FBSyxFQUFFLENBQUM7UUFIUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7SUFHdkQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNLENBQUMsWUFBMEM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsMkJBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLHFDQUFpQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixRQUFRLENBQVUsSUFBb0I7UUFDbEMsSUFBSSxDQUFDLElBQUEsK0NBQXlCLEVBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLElBQUksQ0FBQyxJQUFJLG9DQUFvQyxFQUFDLFlBQVksZ0NBQW1CLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO1lBQ25LLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFBLGdEQUEwQixFQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE1BQU0sVUFBVSxHQUFHLElBQUkscUNBQWlCLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBSSxjQUFjLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFqQ0QsZ0RBaUNDIn0=