import { Knex as KnexType } from "knex"; import { BaseModel } from "../baseModel"; import { ModelKeys } from "../interfaces"; export interface RepositoryContract { model: any; knexConnection: KnexType | null; trx: KnexType.Transaction | null; currentforUpdate: Record | null; bindCon(conName?: string): RepositoryContract; all(inputs?: T): Promise; firstWhere(inputs: ModelKeys, error?: boolean): Promise; getWhere(inputs: ModelKeys, error?: boolean): Promise; create(inputs: ModelKeys): Promise; createOrUpdate(conditions: ModelKeys, values: ModelKeys): Promise; firstOrNew(conditions: ModelKeys, values: ModelKeys): Promise; update(model: T, setValues: ModelKeys): Promise; updateWhere(where: ModelKeys, setValues: ModelKeys): Promise; exists(params: ModelKeys): Promise; count(params: ModelKeys): Promise; refresh(model: T): Promise; delete(model: T): Promise; deleteWhere(params: ModelKeys): Promise; attach(model: T, relation: string, payload: number | string | Array | Record): Promise; sync(model: T, relation: string, payload: any[]): Promise; chunk(where: ModelKeys, size: number, cb: (models: T[]) => void): Promise; raiseError(): void; query(): any; updateAndReturn(where: ModelKeys, setValues: ModelKeys, returnOne?: boolean): Promise; bulkInsert(inputs: ModelKeys[]): Promise; startTrx(options?: KnexType.TransactionConfig): Promise>; bindTrx(trx: KnexType.Transaction): RepositoryContract; getTrx(): KnexType.Transaction | null; commitTrx(): Promise; rollbackTrx(): Promise; forUpdate(): this; }