import { BaseModel } from '@anthor/entities-types'; type Omit = Pick>; export type BaseModelLike> = { [K in keyof T]: T[K] extends Partial ? string : T[K] extends Partial[] ? string[] : T[K]; }; export type FilterInput> = BaseModelLike & FilterOperatorsInput; export type TypeLike = (T | string | number); export interface FilterOperators { gt?: T; gte?: T; lt?: T; lte?: T; ne?: T; in?: T extends any[] ? TypeLike : TypeLike[]; nin?: T extends any[] ? TypeLike : TypeLike[]; regex?: string; } export interface FilterOperatorsInput> { _operators?: { [K in keyof T]?: FilterOperators; }; _ids?: string[]; AND?: FilterInput[]; OR?: FilterInput[]; } export interface FindByIdInput> { _id: string; } export interface SkipLimitAndSort { skip?: number; limit?: number; sort?: any; } export interface FindOneInput> extends SkipLimitAndSort { filter?: FilterInput; } export interface FindByIdsInput extends SkipLimitAndSort { _ids: string[]; } export interface FindManyInput> extends SkipLimitAndSort { filter?: FilterInput; sort?: any; } export interface PaginationInput> { page?: number; perPage?: number; filter?: FilterInput; } export interface CountInput> { filter: FilterInput; } export type CreateRecord> = BaseModelLike>; export interface CreateInput> { record: CreateRecord; } export interface CreateManyInput> { records: CreateRecord[]; } export type UpdateRecord> = BaseModelLike>; export interface UpdateInput> { record: UpdateRecord; } export type UpdateOneRecord> = CreateRecord; export interface UpdateOneInput> extends SkipLimitAndSort { record: UpdateOneRecord; filter?: FilterInput; } export interface UpdateManyInput> extends SkipLimitAndSort { record: UpdateRecord; filter?: FilterInput; } export interface RemoveByIdInput> { _id?: string; } export interface RemoveOneInput> { filter?: FilterInput; sort: any; } export interface RemoveManyInput> { filter?: FilterInput; } export interface DistinctInput> { field: string; filter?: FilterInput; } export {};