@typegoose/typegoose
Version:
Define Mongoose models using TypeScript classes
52 lines (51 loc) • 2.15 kB
TypeScript
/// <reference types="mongoose/types/aggregate" />
/// <reference types="mongoose/types/callback" />
/// <reference types="mongoose/types/collection" />
/// <reference types="mongoose/types/connection" />
/// <reference types="mongoose/types/cursor" />
/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/error" />
/// <reference types="mongoose/types/expressions" />
/// <reference types="mongoose/types/helpers" />
/// <reference types="mongoose/types/middlewares" />
/// <reference types="mongoose/types/indexes" />
/// <reference types="mongoose/types/models" />
/// <reference types="mongoose/types/mongooseoptions" />
/// <reference types="mongoose/types/pipelinestage" />
/// <reference types="mongoose/types/populate" />
/// <reference types="mongoose/types/query" />
/// <reference types="mongoose/types/schemaoptions" />
/// <reference types="mongoose/types/schematypes" />
/// <reference types="mongoose/types/session" />
/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/utility" />
/// <reference types="mongoose/types/validation" />
/// <reference types="mongoose/types/virtuals" />
/// <reference types="mongoose/types/inferschematype" />
/// <reference types="mongoose/types/inferrawdoctype" />
import type { Query } from 'mongoose';
import type { AnyParamConstructor, QueryHelperThis } from './types';
/**
* 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);
* ```
*/
export declare function queryMethod<QueryHelpers, U extends AnyParamConstructor<any>>(func: (this: QueryHelperThis<U, QueryHelpers>, ...params: any[]) => Query<any, any>): ClassDecorator;
export { queryMethod as QueryMethod };