backend/lib/seed/engine/utils/__interface.ts
2025-05-14 21:45:16 +02:00

77 lines
2.5 KiB
TypeScript

import { GetArgs } from '@seed/graphql/Request';
import { ApolloContext } from '@seed/interfaces/context';
import { FilterQuery, UpdateQuery } from 'mongodb';
import { EngineModel } from '../EngineModel';
import { IEngineSchema } from '../EngineSchema';
export interface GetQueryInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
}
export interface GetManyInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
pagination?: GetArgs;
ctx?: ApolloContext | null;
}
export interface GetAllInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
}
export interface GetCountInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
}
export interface GetOneInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
}
export interface SaveOneInput<SchemaDBInterface> {
newData?: SchemaDBInterface & Partial<IEngineSchema>;
additionnalData?: Partial<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
upsert?: boolean;
}
export interface SaveManyInput<SchemaDBInterface> {
models: EngineModel<SchemaDBInterface, any, any>[];
ctx?: ApolloContext | null;
}
export interface BulkInput<SchemaDBInterface, SchemaDB, Schema> {
inserts?: EngineModel<SchemaDBInterface, SchemaDB, Schema>[];
updates?: {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
newData?: Partial<SchemaDBInterface & IEngineSchema>;
updateRequest?: UpdateQuery<SchemaDBInterface & IEngineSchema>;
}[];
ctx?: ApolloContext | null;
}
export interface UpdateOneInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
newData: Partial<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
}
export interface UpdateOneCustomInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
updateRequest: UpdateQuery<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
}
export interface UpdateOneSubField<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
fieldName: keyof SchemaDBInterface;
subPath?: string;
fieldValue: any;
ctx?: ApolloContext | null;
}
export interface DeleteOneInput<SchemaDBInterface> {
query: FilterQuery<SchemaDBInterface & IEngineSchema>;
ctx?: ApolloContext | null;
}