@sqltools/base-driver
Version:
SQLTools Base Driver
57 lines (56 loc) • 2.98 kB
TypeScript
import { IConnectionDriver, IBaseQueries, IConnection, IExpectedResult, NodeDependency, ContextValue, MConnectionExplorer, IQueryOptions, NSDatabase, LSIConnection } from '@sqltools/types';
import { createLogger } from '@sqltools/log';
import { TunnelOptions } from 'tunnel-ssh';
export default abstract class AbstractDriver<ConnectionType extends any, DriverOptions extends any> implements IConnectionDriver {
credentials: IConnection<DriverOptions>;
protected getWorkspaceFolders: LSIConnection['workspace']['getWorkspaceFolders'];
log: ReturnType<typeof createLogger>;
readonly deps: NodeDependency[];
getId(): string;
connection: Promise<ConnectionType>;
abstract queries: IBaseQueries;
constructor(credentials: IConnection<DriverOptions>, getWorkspaceFolders: LSIConnection['workspace']['getWorkspaceFolders']);
abstract open(): Promise<ConnectionType>;
abstract close(): Promise<void>;
abstract query<R = any, Q = any>(queryOrQueries: Q | string | String, opt: IQueryOptions): Promise<NSDatabase.IResult<Q extends IExpectedResult<infer U> ? U : R>[]>;
singleQuery<R = any, Q = any>(query: Q | string | String, opt: IQueryOptions): Promise<NSDatabase.IResult<Q extends IExpectedResult<infer U> ? U : R>>;
protected queryResults: <R = any, Q = any>(query: string | String | Q, opt?: IQueryOptions) => Promise<((Q extends IExpectedResult<infer U> ? U : R) extends infer T ? T extends (Q extends IExpectedResult<infer U> ? U : R) ? T extends {
[key: string]: any;
} ? T : any : never : never)[]>;
describeTable(metadata: NSDatabase.ITable, opt: IQueryOptions): Promise<NSDatabase.IResult<any>[]>;
showRecords(table: NSDatabase.ITable, opt: IQueryOptions & {
limit: number;
page?: number;
}): Promise<NSDatabase.IResult<any>[]>;
checkDependencies(): Promise<void>;
requireDep: (name: string) => any;
resolveDep: (name: string) => string;
getChildrenForItem(_params: {
item: NSDatabase.SearchableItem;
parent?: NSDatabase.SearchableItem;
}): Promise<MConnectionExplorer.IChildItem[]>;
searchItems(_itemType: ContextValue, _search: string, _extraParams?: any): Promise<NSDatabase.SearchableItem[]>;
getDefinitionForItem(_params: {
item: NSDatabase.DefinableItem;
}): Promise<string>;
toAbsolutePath(fsPath: string): Promise<string>;
protected prepareMessage(message: any): NSDatabase.IResult['messages'][number];
createSshTunnel(ssh: {
host: string;
port: number;
username: string;
password?: string;
privateKeyPath?: string;
passphrase?: string;
}, db: {
host: string;
port: number;
}, tunnelOptions?: Partial<TunnelOptions>): Promise<{
port: number;
close: () => void;
}>;
static readonly CONSTANTS: {
DEPENDENCY_PACKAGE: "package" | "npmscript";
DEPENDENCY_NPM_SCRIPT: "package" | "npmscript";
};
}