import { Operation, SortDirection } from "./datasources"; import { Row, Table } from "../documents"; export interface SearchFilters { allOr?: boolean; string?: { [key: string]: string; }; fuzzy?: { [key: string]: string; }; range?: { [key: string]: { high: number | string; low: number | string; }; }; equal?: { [key: string]: any; }; notEqual?: { [key: string]: any; }; empty?: { [key: string]: any; }; notEmpty?: { [key: string]: any; }; oneOf?: { [key: string]: any[]; }; contains?: { [key: string]: any[]; }; notContains?: { [key: string]: any[]; }; containsAny?: { [key: string]: any[]; }; } export interface SortJson { [key: string]: SortDirection; } export interface PaginationJson { limit: number; page?: string | number; } export interface RenameColumn { old: string; updated: string; } export interface RelationshipsJson { through?: string; from?: string; to?: string; fromPrimary?: string; toPrimary?: string; tableName: string; column: string; } export interface QueryJson { endpoint: { datasourceId: string; entityId: string; operation: Operation; schema?: string; }; resource: { fields: string[]; }; filters?: SearchFilters; sort?: SortJson; paginate?: PaginationJson; body?: Row | Row[]; table?: Table; meta?: { table?: Table; tables?: Record; renamed: RenameColumn; }; extra?: { idFilter?: SearchFilters; }; relationships?: RelationshipsJson[]; } export interface SqlQuery { sql: string; bindings?: string[]; }