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 QueryOptions { discardResult?: boolean; } export interface WriteTableOptions { dropIfExists?: boolean; truncate?: boolean; createIfNotExists?: boolean; } export interface EngineAuthType { title: string; name: string; disabledFields: string[]; } export interface ReadCollectionOptions { pureName: string; schemaName?: string; countDocuments?: boolean; skip?: number; limit?: number; } export interface EngineDriver { engine: string; title: string; defaultPort?: number; supportsDatabaseUrl?: boolean; isElectronOnly?: boolean; showConnectionField?: (field: string, values: any) => boolean; showConnectionTab?: (tab: 'ssl' | 'sshTunnel', values: any) => boolean; beforeConnectionSave?: (values: any) => any; databaseUrlPlaceholder?: string; defaultAuthTypeName?: string; connect({ server, port, user, password, database }): Promise; close(pool): Promise; query(pool: any, sql: string, options?: QueryOptions): 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, serverVersion): Promise; analyseIncremental(pool: any, structure: DatabaseInfo, serverVersion): Promise; dialect: SqlDialect; dialectByVersion(version): SqlDialect; createDumper(): SqlDumper; getAuthTypes(): EngineAuthType[]; readCollection(pool: any, options: ReadCollectionOptions): Promise; updateCollection(pool: any, changeSet: any): Promise; getCollectionUpdateScript(changeSet: any): string; createDatabase(pool: any, name: string): Promise; getQuerySplitterOptions(usage: 'stream' | 'script'): any; script(pool: any, sql: string): Promise; analyserClass?: any; dumperClass?: any; } export interface DatabaseModification { oldName?: NamedObjectInfo; newName?: NamedObjectInfo; objectId?: string; action: 'add' | 'remove' | 'change' | 'all'; objectTypeField: keyof DatabaseInfo; }