UNPKG

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