UNPKG

@typegoose/typegoose

Version:

Define Mongoose models using TypeScript classes

39 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QueryMethod = exports.queryMethod = void 0; const constants_1 = require("./internal/constants"); const utils_1 = require("./internal/utils"); const logSettings_1 = require("./logSettings"); /** * Adds a query method to the Class which will then be added to the Schema. * @param func The Query Method to add * @example * ```ts * interface FindHelpers { * findByTitle: AsQueryMethod<typeof findByTitle>; * } * * function findByTitle(this: ReturnModelType<typeof Event, FindHelpers>, title: string) { * return this.find({ title }); * } * * @queryMethod(findByTitle) * class Event { * @prop() * public title: string; * } * * const EventModel = getModelForClass<typeof Event, FindHelpers>(Event); * ``` */ function queryMethod(func) { return (target) => { logSettings_1.logger.info('Adding query method "%s" to %s', func.name, (0, utils_1.getName)(target)); const queryMethods = new Map(Reflect.getMetadata(constants_1.DecoratorKeys.QueryMethod, target) ?? []); queryMethods.set(func.name, func); Reflect.defineMetadata(constants_1.DecoratorKeys.QueryMethod, queryMethods, target); }; } exports.queryMethod = queryMethod; exports.QueryMethod = queryMethod; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlNZXRob2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnlNZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0RBQXFEO0FBQ3JELDRDQUEyQztBQUMzQywrQ0FBdUM7QUFHdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsSUFBbUY7SUFFbkYsT0FBTyxDQUFDLE1BQVcsRUFBRSxFQUFFO1FBQ3JCLG9CQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBQSxlQUFPLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLFlBQVksR0FBbUIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyx5QkFBYSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBYSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVRELGtDQVNDO0FBR3VCLGtDQUFXIn0=