@slsplus/database
Version:
Serverless Database Tool
92 lines (91 loc) • 2.6 kB
TypeScript
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[]>;
}