import { Configuration, ConnectionOptions } from '../utils'; import { MetadataStorage } from '../metadata'; import { Dictionary } from '../typings'; export declare abstract class Connection { protected readonly config: Configuration; protected readonly options?: ConnectionOptions | undefined; protected readonly type: 'read' | 'write'; protected metadata: MetadataStorage; protected abstract client: any; constructor(config: Configuration, options?: ConnectionOptions | undefined, type?: 'read' | 'write'); /** * Establishes connection to database */ abstract connect(): Promise; /** * Are we connected to the database */ abstract isConnected(): Promise; /** * Closes the database connection (aka disconnect) */ abstract close(force?: boolean): Promise; /** * Returns default client url for given driver (e.g. mongodb://127.0.0.1:27017 for mongodb) */ abstract getDefaultClientUrl(): string; transactional(cb: (trx: Transaction) => Promise, ctx?: Transaction): Promise; begin(ctx?: Transaction): Promise; commit(ctx: Transaction): Promise; rollback(ctx: Transaction): Promise; abstract execute(query: string, params?: any[], method?: 'all' | 'get' | 'run', ctx?: Transaction): Promise; getConnectionOptions(): ConnectionConfig; getClientUrl(): string; setMetadata(metadata: MetadataStorage): void; protected executeQuery(query: string, cb: () => Promise): Promise; protected logQuery(query: string, took?: number): void; } export interface QueryResult { affectedRows: number; insertId: number; row?: Dictionary; rows?: Dictionary[]; } export interface ConnectionConfig { host?: string; port?: number; user?: string; password?: string; database?: string; } export declare type Transaction = T;