export interface IQuery { filter: (model: TModel) => boolean; skip: number; limit: number; sort: { key: (model: TModel) => any; option: "asc" | "desc" }[]; } export interface IRepository { getBy(options: IQuery): Promise; save(models: TModel[]): Promise; deleteBy(filter: (model: TModel) => boolean): Promise; }