mongodb-dynamic-api
Version:
Auto generated CRUD API for MongoDB using NestJS
51 lines (50 loc) • 3.14 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" />
import { Type } from '@nestjs/common';
import { PipelineStage } from 'mongodb-pipeline-builder';
import { FilterQuery, UpdateQuery, UpdateWithAggregationPipeline } from 'mongoose';
import { BaseEntity } from '../models';
import { DeleteResult, UpdateResult } from './dynamic-api-route-response.type';
type DynamicApiCallbackMethods = {
findManyDocuments<T>(entity: Type<T>, query: FilterQuery<T>): Promise<T[]>;
findOneDocument<T>(entity: Type<T>, query: FilterQuery<T>): Promise<T | undefined>;
createManyDocuments<T>(entity: Type<T>, data: Partial<T>[]): Promise<T[]>;
createOneDocument<T>(entity: Type<T>, data: Partial<T>): Promise<T>;
updateManyDocuments<T>(entity: Type<T>, query: FilterQuery<T>, update: UpdateQuery<T> | UpdateWithAggregationPipeline): Promise<UpdateResult>;
updateOneDocument<T>(entity: Type<T>, query: FilterQuery<T>, update: UpdateQuery<T> | UpdateWithAggregationPipeline): Promise<UpdateResult>;
deleteManyDocuments<T>(entity: Type<T>, ids: string[]): Promise<DeleteResult>;
deleteOneDocument<T>(entity: Type<T>, id: string): Promise<DeleteResult>;
aggregateDocuments<T>(entity: Type<T>, pipeline: PipelineStage[]): Promise<T[]>;
};
type DynamicApiServiceCallback<Entity extends BaseEntity> = (entity: Entity, methods: DynamicApiCallbackMethods) => Promise<void>;
type DynamicApiResetPasswordCallbackMethods<Entity extends BaseEntity, UpdateBy = 'userId'> = {
findUserByEmail: () => Promise<Entity>;
updateUserByEmail: (update: UpdateQuery<Entity> | UpdateWithAggregationPipeline) => Promise<Entity>;
};
type DynamicApiResetPasswordCallback<Entity extends BaseEntity> = (_: {
resetPasswordToken: string;
email: string;
}, methods: DynamicApiResetPasswordCallbackMethods<Entity>) => Promise<void>;
export type { DynamicApiServiceCallback, DynamicApiResetPasswordCallback, DynamicApiCallbackMethods, DynamicApiResetPasswordCallbackMethods, };