UNPKG

@dolittle/sdk.projections

Version:

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

39 lines 3.55 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.getDecoratedCopyProjectionToMongoDB = exports.isDecoratedCopyProjectionToMongoDB = exports.copyProjectionToMongoDB = void 0; const sdk_common_1 = require("@dolittle/sdk.common"); const CollectionName_1 = require("../../Copies/MongoDB/CollectionName"); const CopyProjectionToMongoDBDecoratedType_1 = require("./CopyProjectionToMongoDBDecoratedType"); const [decorator, getMetadata] = sdk_common_1.Decorators.createMetadataDecorator('projection-copy-to-mongodb', 'copyProjectionToMongoDB', sdk_common_1.Decorators.DecoratorTarget.Class); /** * Decorator to mark a Projection class to copy the read models to a MongoDB collection. * @param {CollectionNameLike} [collection] - An optional collection name to use, defaults to the name of the class. * @returns {Decorators.Decorator} The decorator. */ function copyProjectionToMongoDB(collection) { return decorator((target, type) => { return new CopyProjectionToMongoDBDecoratedType_1.CopyProjectionToMongoDBDecoratedType(CollectionName_1.CollectionName.from(collection !== null && collection !== void 0 ? collection : type.name), type); }); } exports.copyProjectionToMongoDB = copyProjectionToMongoDB; /** * Checks whether the specified class is decorated with a copy to MongoDB decorator. * @param {Constructor<any>} type - The class to get the decorated copy to MongoDB for. * @returns {boolean} True if the decorator is applied, false if not. */ function isDecoratedCopyProjectionToMongoDB(type) { return getMetadata(type, false, false) !== undefined; } exports.isDecoratedCopyProjectionToMongoDB = isDecoratedCopyProjectionToMongoDB; /** * Gets the {@link CopyProjectionToMongoDBDecoratedType} of the specified class. * @param {Constructor<any>} type - The class to get the decorated copy to MongoDB for. * @returns {CopyProjectionToMongoDBDecoratedType} The decorated projection type. */ function getDecoratedCopyProjectionToMongoDB(type) { return getMetadata(type, true, 'Projection classes to be copied to MongoDB must be decorated'); } exports.getDecoratedCopyProjectionToMongoDB = getDecoratedCopyProjectionToMongoDB; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weVByb2plY3Rpb25Ub01vbmdvREJEZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiLi4vIiwic291cmNlcyI6WyJCdWlsZGVycy9Db3BpZXMvY29weVByb2plY3Rpb25Ub01vbmdvREJEZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxxR0FBcUc7OztBQUVyRyxxREFBa0Q7QUFFbEQsd0VBQXlGO0FBRXpGLGlHQUE4RjtBQUU5RixNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxHQUFHLHVCQUFVLENBQUMsdUJBQXVCLENBQXVDLDRCQUE0QixFQUFFLHlCQUF5QixFQUFFLHVCQUFVLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXJNOzs7O0dBSUc7QUFDSCxTQUFnQix1QkFBdUIsQ0FBQyxVQUErQjtJQUNuRSxPQUFPLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUM5QixPQUFPLElBQUksMkVBQW9DLENBQzNDLCtCQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsYUFBVixVQUFVLGNBQVYsVUFBVSxHQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDNUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFORCwwREFNQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixrQ0FBa0MsQ0FBQyxJQUFzQjtJQUNyRSxPQUFPLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUN6RCxDQUFDO0FBRkQsZ0ZBRUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUNBQW1DLENBQUMsSUFBc0I7SUFDdEUsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSw4REFBOEQsQ0FBQyxDQUFDO0FBQ25HLENBQUM7QUFGRCxrRkFFQyJ9