import stream from 'stream'; import { QueryResult } from './query'; import { SqlDialect } from './dialect'; import { SqlDumper } from './dumper'; import { DatabaseInfo, NamedObjectInfo, TableInfo, ViewInfo, ProcedureInfo, FunctionInfo, TriggerInfo } from './dbinfo'; export interface StreamOptions { recordset: (columns) => void; row: (row) => void; error?: (error) => void; done?: (result) => void; info?: (info) => void; } export interface WriteTableOptions { dropIfExists?: boolean; truncate?: boolean; createIfNotExists?: boolean; } export interface EngineAuthType { title: string; name: string; disabledFields: string[]; } export interface EngineDriver { engine: string; title: string; connect({ server, port, user, password, database }): any; query(pool: any, sql: string): Promise; stream(pool: any, sql: string, options: StreamOptions); readQuery(pool: any, sql: string, structure?: TableInfo): Promise; writeTable(pool: any, name: NamedObjectInfo, options: WriteTableOptions): Promise; analyseSingleObject( pool: any, name: NamedObjectInfo, objectTypeField: keyof DatabaseInfo ): Promise; analyseSingleTable(pool: any, name: NamedObjectInfo): Promise; getVersion(pool: any): Promise<{ version: string }>; listDatabases( pool: any ): Promise< { name: string; }[] >; analyseFull(pool: any): Promise; analyseIncremental(pool: any, structure: DatabaseInfo): Promise; dialect: SqlDialect; createDumper(): SqlDumper; getAuthTypes(): EngineAuthType[]; analyserClass?: any; dumperClass?: any; } export interface DatabaseModification { oldName?: NamedObjectInfo; newName?: NamedObjectInfo; objectId?: string; action: 'add' | 'remove' | 'change'; objectTypeField: keyof DatabaseInfo; }