export type IQueryOperationSingleValue = 'equals' | 'notEquals' | 'lt' | 'lte' | 'gt' | 'gte' | 'contains'; export type IQueryOperationMultipleValue = 'in' | 'notIn'; export type IQueryOperation = IQueryOperationSingleValue & IQueryOperationMultipleValue; export type IQueryWhere = { [P in keyof T]?: T[P] | (Partial> & Partial>); }; export type IQueryOrderBy = { [P in keyof T]?: 'ASC' | 'DESC'; }; export interface IQueryOptions { columns?: (keyof T | '*')[]; page?: number; limit?: number; where?: IQueryWhere; order?: IQueryOrderBy; } export type TDataType = 'INTEGER' | 'FLOAT' | 'TEXT' | 'NUMERIC' | 'DATE' | 'DATETIME' | 'BOOLEAN' | 'JSON'; export interface ColumnOptions { type: TDataType; default?: () => unknown; } export type ColumnMapping = Record;