@dolittle/sdk.projections
Version:
Dolittle is a decentralized, distributed, event-driven microservice platform built to harness the power of events.
32 lines • 3.05 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.getConvertToMongoDBDecoratedProperties = exports.convertToMongoDB = void 0;
const sdk_common_1 = require("@dolittle/sdk.common");
const ProjectionProperty_1 = require("../../Copies/ProjectionProperty");
const MongoDBConversionDecoratedProperty_1 = require("./MongoDBConversionDecoratedProperty");
const [decorator, getMetadata] = sdk_common_1.Decorators.createMetadataDecorator('projection-copy-to-mongodb-conversions', 'convertToMongoDB', sdk_common_1.Decorators.DecoratorTarget.Property);
/**
* Decorator for specifying conversions to be applied when producing read model copies to MongoDB.
* @param {Conversion} conversion - The conversion to apply for the decorated property.
* @returns {Decorators.Decorator} The decorator.
*/
function convertToMongoDB(conversion) {
return decorator((target, type, propertyKey, _, mongoDBConversionDecoratedProperties) => {
const properties = mongoDBConversionDecoratedProperties || [];
properties.push(new MongoDBConversionDecoratedProperty_1.MongoDBConversionDecoratedProperty(ProjectionProperty_1.ProjectionProperty.from(propertyKey), conversion, type));
return properties;
});
}
exports.convertToMongoDB = convertToMongoDB;
/**
* Gets the MongoDB conversion decorated projection properties of the specified class.
* @param {Constructor<any>} type - The class to get the MongoDB conversion decorated projection properties for.
* @returns {MongoDBConversionDecoratedProperty[]} The MongoDB conversion decorated projection properties.
*/
function getConvertToMongoDBDecoratedProperties(type) {
return getMetadata(type) || [];
}
exports.getConvertToMongoDBDecoratedProperties = getConvertToMongoDBDecoratedProperties;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFRvTW9uZ29EQkRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8iLCJzb3VyY2VzIjpbIkJ1aWxkZXJzL0NvcGllcy9jb252ZXJ0VG9Nb25nb0RCRGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7QUFDL0MscUdBQXFHOzs7QUFFckcscURBQWtEO0FBR2xELHdFQUFxRTtBQUVyRSw2RkFBMEY7QUFFMUYsTUFBTSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsR0FBRyx1QkFBVSxDQUFDLHVCQUF1QixDQUF1Qyx3Q0FBd0MsRUFBRSxrQkFBa0IsRUFBRSx1QkFBVSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUU3TTs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBc0I7SUFDbkQsT0FBTyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUcsb0NBQW9DLEVBQUUsRUFBRTtRQUNyRixNQUFNLFVBQVUsR0FBRyxvQ0FBb0MsSUFBSSxFQUFFLENBQUM7UUFFOUQsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLHVFQUFrQyxDQUNsRCx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBcUIsQ0FBQyxFQUM5QyxVQUFVLEVBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVYLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQVhELDRDQVdDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHNDQUFzQyxDQUFDLElBQXNCO0lBQ3pFLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRkQsd0ZBRUMifQ==