1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.QueryMethod = exports.queryMethod = void 0;
|
4 | const constants_1 = require("./internal/constants");
|
5 | const utils_1 = require("./internal/utils");
|
6 | const 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 | */
|
29 | function 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 | }
|
37 | exports.queryMethod = queryMethod;
|
38 | exports.QueryMethod = queryMethod;
|
39 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlNZXRob2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVlcnlNZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0RBQXFEO0FBQ3JELDRDQUEyQztBQUMzQywrQ0FBdUM7QUFHdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsSUFBbUY7SUFFbkYsT0FBTyxDQUFDLE1BQVcsRUFBRSxFQUFFO1FBQ3JCLG9CQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBQSxlQUFPLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRSxNQUFNLFlBQVksR0FBbUIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyx5QkFBYSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLGNBQWMsQ0FBQyx5QkFBYSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVRELGtDQVNDO0FBR3VCLGtDQUFXIn0= |
\ | No newline at end of file |