feat: allow specifing dbhan client type

This commit is contained in:
Nybkox
2025-01-09 15:47:16 +01:00
parent d6ffafb640
commit 1154eff459

View File

@@ -133,8 +133,8 @@ export interface FilterBehaviourProvider {
getFilterBehaviour(dataType: string, standardFilterBehaviours: { [id: string]: FilterBehaviour }): FilterBehaviour; getFilterBehaviour(dataType: string, standardFilterBehaviours: { [id: string]: FilterBehaviour }): FilterBehaviour;
} }
export interface DatabaseHandle { export interface DatabaseHandle<TClient = any> {
client: any; client: TClient;
database?: string; database?: string;
feedback?: (message: any) => void; feedback?: (message: any) => void;
getDatabase?: () => any; getDatabase?: () => any;
@@ -142,7 +142,7 @@ export interface DatabaseHandle {
treeKeySeparator?: string; treeKeySeparator?: string;
} }
export interface EngineDriver extends FilterBehaviourProvider { export interface EngineDriver<TClient = any> extends FilterBehaviourProvider {
engine: string; engine: string;
title: string; title: string;
defaultPort?: number; defaultPort?: number;
@@ -183,23 +183,27 @@ export interface EngineDriver extends FilterBehaviourProvider {
defaultSocketPath?: string; defaultSocketPath?: string;
authTypeLabel?: string; authTypeLabel?: string;
importExportArgs?: any[]; importExportArgs?: any[];
connect({ server, port, user, password, database }): Promise<DatabaseHandle>; connect({ server, port, user, password, database }): Promise<DatabaseHandle<TClient>>;
close(dbhan: DatabaseHandle): Promise<any>; close(dbhan: DatabaseHandle<TClient>): Promise<any>;
query(dbhan: DatabaseHandle, sql: string, options?: QueryOptions): Promise<QueryResult>; query(dbhan: DatabaseHandle<TClient>, sql: string, options?: QueryOptions): Promise<QueryResult>;
stream(dbhan: DatabaseHandle, sql: string, options: StreamOptions); stream(dbhan: DatabaseHandle<TClient>, sql: string, options: StreamOptions);
readQuery(dbhan: DatabaseHandle, sql: string, structure?: TableInfo): Promise<stream.Readable>; readQuery(dbhan: DatabaseHandle<TClient>, sql: string, structure?: TableInfo): Promise<stream.Readable>;
readJsonQuery(dbhan: DatabaseHandle, query: any, structure?: TableInfo): Promise<stream.Readable>; readJsonQuery(dbhan: DatabaseHandle<TClient>, query: any, structure?: TableInfo): Promise<stream.Readable>;
// eg. PostgreSQL COPY FROM stdin // eg. PostgreSQL COPY FROM stdin
writeQueryFromStream(dbhan: DatabaseHandle, sql: string): Promise<stream.Writable>; writeQueryFromStream(dbhan: DatabaseHandle<TClient>, sql: string): Promise<stream.Writable>;
writeTable(dbhan: DatabaseHandle, name: NamedObjectInfo, options: WriteTableOptions): Promise<stream.Writable>; writeTable(
dbhan: DatabaseHandle<TClient>,
name: NamedObjectInfo,
options: WriteTableOptions
): Promise<stream.Writable>;
analyseSingleObject( analyseSingleObject(
dbhan: DatabaseHandle, dbhan: DatabaseHandle<TClient>,
name: NamedObjectInfo, name: NamedObjectInfo,
objectTypeField: keyof DatabaseInfo objectTypeField: keyof DatabaseInfo
): Promise<TableInfo | ViewInfo | ProcedureInfo | FunctionInfo | TriggerInfo>; ): Promise<TableInfo | ViewInfo | ProcedureInfo | FunctionInfo | TriggerInfo>;
analyseSingleTable(dbhan: DatabaseHandle, name: NamedObjectInfo): Promise<TableInfo>; analyseSingleTable(dbhan: DatabaseHandle<TClient>, name: NamedObjectInfo): Promise<TableInfo>;
getVersion(dbhan: DatabaseHandle): Promise<{ version: string; versionText?: string }>; getVersion(dbhan: DatabaseHandle<TClient>): Promise<{ version: string; versionText?: string }>;
listDatabases(dbhan: DatabaseHandle): Promise< listDatabases(dbhan: DatabaseHandle<TClient>): Promise<
{ {
name: string; name: string;
}[] }[]
@@ -220,23 +224,23 @@ export interface EngineDriver extends FilterBehaviourProvider {
dialect: SqlDialect; dialect: SqlDialect;
dialectByVersion(version): SqlDialect; dialectByVersion(version): SqlDialect;
createDumper(options = null): SqlDumper; createDumper(options = null): SqlDumper;
createBackupDumper(dbhan: DatabaseHandle, options): Promise<SqlBackupDumper>; createBackupDumper(dbhan: DatabaseHandle<TClient>, options): Promise<SqlBackupDumper>;
getAuthTypes(): EngineAuthType[]; getAuthTypes(): EngineAuthType[];
readCollection(dbhan: DatabaseHandle, options: ReadCollectionOptions): Promise<any>; readCollection(dbhan: DatabaseHandle<TClient>, options: ReadCollectionOptions): Promise<any>;
updateCollection(dbhan: DatabaseHandle, changeSet: any): Promise<any>; updateCollection(dbhan: DatabaseHandle<TClient>, changeSet: any): Promise<any>;
getCollectionUpdateScript(changeSet: any, collectionInfo: CollectionInfo): string; getCollectionUpdateScript(changeSet: any, collectionInfo: CollectionInfo): string;
createDatabase(dbhan: DatabaseHandle, name: string): Promise; createDatabase(dbhan: DatabaseHandle<TClient>, name: string): Promise;
dropDatabase(dbhan: DatabaseHandle, name: string): Promise; dropDatabase(dbhan: DatabaseHandle<TClient>, name: string): Promise;
getQuerySplitterOptions(usage: 'stream' | 'script' | 'editor' | 'import'): any; getQuerySplitterOptions(usage: 'stream' | 'script' | 'editor' | 'import'): any;
script(dbhan: DatabaseHandle, sql: string, options?: RunScriptOptions): Promise; script(dbhan: DatabaseHandle<TClient>, sql: string, options?: RunScriptOptions): Promise;
operation(dbhan: DatabaseHandle, operation: {}, options?: RunScriptOptions): Promise; operation(dbhan: DatabaseHandle<TClient>, operation: {}, options?: RunScriptOptions): Promise;
getNewObjectTemplates(): NewObjectTemplate[]; getNewObjectTemplates(): NewObjectTemplate[];
// direct call of dbhan.client method, only some methods could be supported, on only some drivers // direct call of dbhan.client method, only some methods could be supported, on only some drivers
callMethod(dbhan: DatabaseHandle, method, args); callMethod(dbhan: DatabaseHandle<TClient>, method, args);
serverSummary(dbhan: DatabaseHandle): Promise<ServerSummary>; serverSummary(dbhan: DatabaseHandle<TClient>): Promise<ServerSummary>;
summaryCommand(dbhan: DatabaseHandle, command, row): Promise<void>; summaryCommand(dbhan: DatabaseHandle<TClient>, command, row): Promise<void>;
startProfiler(dbhan: DatabaseHandle, options): Promise<any>; startProfiler(dbhan: DatabaseHandle<TClient>, options): Promise<any>;
stopProfiler(dbhan: DatabaseHandle, profiler): Promise<void>; stopProfiler(dbhan: DatabaseHandle<TClient>, profiler): Promise<void>;
getRedirectAuthUrl(connection, options): Promise<{ url: string; sid: string }>; getRedirectAuthUrl(connection, options): Promise<{ url: string; sid: string }>;
getAuthTokenFromCode(connection, options): Promise<string>; getAuthTokenFromCode(connection, options): Promise<string>;
getAccessTokenFromAuth(connection, req): Promise<string | null>; getAccessTokenFromAuth(connection, req): Promise<string | null>;
@@ -251,7 +255,7 @@ export interface EngineDriver extends FilterBehaviourProvider {
): any[]; ): any[];
// adapts table info from different source (import, other database) to be suitable for this database // adapts table info from different source (import, other database) to be suitable for this database
adaptTableInfo(table: TableInfo): TableInfo; adaptTableInfo(table: TableInfo): TableInfo;
listSchemas(dbhan: DatabaseHandle): SchemaInfo[]; listSchemas(dbhan: DatabaseHandle<TClient>): SchemaInfo[];
analyserClass?: any; analyserClass?: any;
dumperClass?: any; dumperClass?: any;