/// import { Readable } from 'stream'; import { SQLQuery } from '@databases/sql'; import { Driver } from '@databases/shared'; import { Connection as MySqlClient } from 'mysql2/promise'; import TransactionOptions from './types/TransactionOptions'; import EventHandlers from './types/EventHandlers'; import QueryStreamOptions from './types/QueryStreamOptions'; export default class MySqlDriver implements Driver { readonly acquireLockTimeoutMilliseconds: number; readonly client: MySqlClient; private readonly _handlers; private _endCalled; constructor(client: MySqlClient, handlers: EventHandlers, acquireLockTimeoutMilliseconds: number); private _removeFromPool; private _idleErrorEventHandler; private readonly _onIdleError; onAddingToPool(removeFromPool: undefined | (() => void), idleErrorEventHandler: undefined | ((err: Error) => void)): void; onActive(): void; onIdle(): void; dispose(): Promise; canRecycleConnectionAfterError(_err: Error): Promise; beginTransaction(options?: TransactionOptions): Promise; commitTransaction(): Promise; rollbackTransaction(): Promise; shouldRetryTransactionFailure(_transactionOptions: TransactionOptions | undefined, _ex: Error, _failureCount: number): Promise; createSavepoint(savepointName: string): Promise; releaseSavepoint(savepointName: string): Promise; rollbackToSavepoint(savepointName: string): Promise; private _executeQuery; executeAndReturnAll(queries: SQLQuery[]): Promise; executeAndReturnLast(queries: SQLQuery[]): Promise; queryStream(query: SQLQuery, options?: QueryStreamOptions): AsyncGenerator; queryNodeStream(query: SQLQuery, options?: QueryStreamOptions): Readable; }