export interface IConditions { $and: IConditions[] $or: IConditions[] $nor: IConditions[] [key: string]: | { $gt?: string | Date | number $gte?: string | Date | number $lt?: string | Date | number $lte?: string | Date | number $eq?: any $ne?: any $in?: any[] $nin?: any[] $not: IConditions $isNull: any } | any } export interface IFilter { limit?: number offset?: number order?: any fields?: string[] conditions?: IConditions } export interface IQueryExecutor { findOne(filter?: IFilter): Promise findMany(filter?: IFilter): Promise findById(id: any): Promise create(data: Partial): Promise replaceById(id: ID, replacement: Partial): Promise update(data: Partial, conditions: IConditions): Promise updateById(id: ID, data: any): Promise delete(conditions?: IConditions): Promise deleteById(id: any): Promise }