@sqltools/base-driver
Version:
SQLTools Base Driver
39 lines (38 loc) • 2.46 kB
TypeScript
import { IConnectionDriver, IBaseQueries, IConnection, IExpectedResult, NodeDependency, ContextValue, MConnectionExplorer, IQueryOptions, NSDatabase, LSIConnection } from '@sqltools/types';
import { createLogger } from '@sqltools/log';
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 {
[key: string]: any;
} ? Q extends IExpectedResult<infer U> ? U : R : any)[]>;
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[]>;
toAbsolutePath(fsPath: string): Promise<string>;
protected prepareMessage(message: any): NSDatabase.IResult['messages'][number];
static readonly CONSTANTS: {
DEPENDENCY_PACKAGE: "package" | "npmscript";
DEPENDENCY_NPM_SCRIPT: "package" | "npmscript";
};
}