UNPKG

@slsplus/database

Version:
92 lines (91 loc) 2.6 kB
import { Connection, ConnectionOptions, RowDataPacket, OkPacket, ResultSetHeader } from 'mysql2/promise'; export interface Options { debug?: boolean; maxRetries?: number; sleepGap?: number; getMaxConnsFreq?: number; getUsedConnsFreq?: number; connsUtilization?: number; zombieMinTimeout?: number; zombieMaxTimeout?: number; onConnect?: (...args: any) => any; onConnectError?: (...args: any) => any; onClear?: (...args: any) => any; onClearError?: (...args: any) => any; onError?: (...args: any) => any; onClose?: (...args: any) => any; } export declare type QueryResult = RowDataPacket[][] | RowDataPacket[] | OkPacket | OkPacket[] | ResultSetHeader; export interface FullOptions { debug: boolean; maxRetries: number; sleepGap: number; getMaxConnsFreq: number; getUsedConnsFreq: number; connsUtilization: number; zombieMinTimeout: number; zombieMaxTimeout: number; onConnect: (...args: any) => any; onConnectError: (...args: any) => any; onClear: (...args: any) => any; onClearError: (...args: any) => any; onError: (...args: any) => any; onClose: (...args: any) => any; } export interface MaxConnections { updated: number; total: number; userLimit: boolean; } export interface UsedConnections { updated: number; total: number; maxAge: number; } export declare type Rollback = (e?: any) => void; export interface DbClient extends Connection { connection: { stream: { connecting: boolean; }; }; } export declare type QueryValues = any | any[] | { [param: string]: any; }; export interface Query { sql: string; values: QueryValues; } export interface DatabaseInterface { client: DbClient | null; connectionOptions: ConnectionOptions; options: FullOptions; retries: number; errors: number; maxConnections: MaxConnections; usedConnections: UsedConnections; connect: () => void; /** * query databse * @param sql query statament * @param values query parameters */ query: (qArgs: { sql: string; values?: QueryValues; rollback?: Rollback; }) => Promise<any>; commit: (queries: Query[], rollback: Rollback) => Promise<any>; } export interface TransactionInterface { db: DatabaseInterface; queries: Query[]; rollback: Rollback; addQuery: ({ sql, values }: { sql: string; values?: QueryValues; }) => void; setRollback: (fn?: Rollback) => void; commit: () => Promise<any[] | QueryResult[]>; }