UNPKG

2.19 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.QueryMethod = exports.queryMethod = void 0;
4const constants_1 = require("./internal/constants");
5const utils_1 = require("./internal/utils");
6const logSettings_1 = require("./logSettings");
7/**
8 * Adds a query method to the Class which will then be added to the Schema.
9 * @param func The Query Method to add
10 * @example
11 * ```ts
12 * interface FindHelpers {
13 * findByTitle: AsQueryMethod<typeof findByTitle>;
14 * }
15 *
16 * function findByTitle(this: ReturnModelType<typeof Event, FindHelpers>, title: string) {
17 * return this.find({ title });
18 * }
19 *
20 * @queryMethod(findByTitle)
21 * class Event {
22 * @prop()
23 * public title: string;
24 * }
25 *
26 * const EventModel = getModelForClass<typeof Event, FindHelpers>(Event);
27 * ```
28 */
29function queryMethod(func) {
30 return (target) => {
31 logSettings_1.logger.info('Adding query method "%s" to %s', func.name, (0, utils_1.getName)(target));
32 const queryMethods = new Map(Reflect.getMetadata(constants_1.DecoratorKeys.QueryMethod, target) ?? []);
33 queryMethods.set(func.name, func);
34 Reflect.defineMetadata(constants_1.DecoratorKeys.QueryMethod, queryMethods, target);
35 };
36}
37exports.queryMethod = queryMethod;
38exports.QueryMethod = queryMethod;
39//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlNZXRob2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnlNZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0RBQXFEO0FBQ3JELDRDQUEyQztBQUMzQywrQ0FBdUM7QUFHdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsSUFBbUY7SUFFbkYsT0FBTyxDQUFDLE1BQVcsRUFBRSxFQUFFO1FBQ3JCLG9CQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBQSxlQUFPLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLFlBQVksR0FBbUIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyx5QkFBYSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBYSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVRELGtDQVNDO0FBR3VCLGtDQUFXIn0=
\No newline at end of file