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