import { IDbJsTypes } from '@ulixee/sql-engine/interfaces/IDbTypes'; import SqlParser from '@ulixee/sql-engine/lib/Parser'; import Datastore from '../lib/Datastore'; import { IQueryInternalCallbacks } from '../lib/DatastoreInternal'; import { ISchema } from '../storage-engines/AbstractStorageEngine'; import IDatastoreComponents, { TCrawlers, TExtractors, TTables } from './IDatastoreComponents'; import IQueryOptions from './IQueryOptions'; export default interface IStorageEngine { inputsByName: { [name: string]: ISchema; }; schemasByName: { [name: string]: ISchema; }; virtualTableNames: Set; filterLocalTableCalls(entityCalls: string[]): string[]; bind(datastore: IDatastoreComponents): void; create(datastore: Datastore, previousVersion?: Datastore): Promise; query(sql: string | SqlParser, boundValues: IDbJsTypes[], metadata?: IQueryOptions, virtualEntitiesByName?: { [name: string]: { parameters?: Record; records: Record[]; }; }, callbacks?: IQueryInternalCallbacks): Promise; close(): Promise; }