UNPKG

@slsplus/database

Version:
104 lines (103 loc) 4.15 kB
import { Connection, ConnectionOptions } from 'mysql2/promise'; import { Options, FullOptions, MaxConnections, UsedConnections, DbClient, Query, QueryValues, DatabaseInterface, TransactionInterface, QueryResult } from '../typings'; declare class Database implements DatabaseInterface { client: DbClient | null; connectionOptions: ConnectionOptions; options: FullOptions; retries: number; errors: number; maxConnections: MaxConnections; usedConnections: UsedConnections; /** * constructor * @param connOptions mysql connection options * @param options database tool options */ constructor(connOptions: ConnectionOptions, options?: Options); /** * reset retry counts */ resetRetries(): void; resetClient(): void; connect(): Promise<void>; /** * query databse * @param sql query statament * @param values query parameters */ query<T extends QueryResult>({ sql, values, rollback, }: { sql: string; values?: QueryValues; rollback?: (e?: any) => void; }): Promise<T>; /** * create trarnsaction */ createTransaction(): TransactionInterface; /** * commit transaction queries * @param queries sql queries * @param rollback rollback function */ commit(queries: Query[], rollback: (e?: any) => void): Promise<(import("mysql2/typings/mysql/lib/protocol/packets/OkPacket") | import("mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader") | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[] | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[][] | import("mysql2/typings/mysql/lib/protocol/packets/OkPacket")[])[]>; /** * close connection */ close(): Promise<void>; /** * end client, clear all zombies */ end(): Promise<void>; /** * create database * @param dbname database name */ createDb(dbname: string): Promise<import("mysql2/typings/mysql/lib/protocol/packets/OkPacket") | import("mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader") | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[] | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[][] | import("mysql2/typings/mysql/lib/protocol/packets/OkPacket")[]>; /** * truncate table * @param dbname table name */ truncateTable(tableName: string): Promise<import("mysql2/typings/mysql/lib/protocol/packets/OkPacket") | import("mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader") | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[] | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[][] | import("mysql2/typings/mysql/lib/protocol/packets/OkPacket")[]>; /** * get database list */ getDbs(): Promise<{ [propName: string]: string; }[]>; /** * * @param dbname database name */ isDbExist(dbname: string): Promise<boolean>; /** * get tables */ getTables(): Promise<{ [propName: string]: string; }[]>; /** * whether table exist * @param dbname database name * @param tableName table name */ isTableExist(dbname: string, tableName: string): Promise<boolean>; _connect(): Promise<true | undefined>; /** * get max connections */ _getMaxConnections(): Promise<void>; /** * get totol connections */ _getTotalConnections(): Promise<void>; /** * clear zombie connections * @param timeout timeout for sleepy connections */ _clearZombieConnections(timeout: number): Promise<number>; _dbQuery({ sql, values }: { sql: string; values?: QueryValues; }): Promise<import("mysql2/typings/mysql/lib/protocol/packets/OkPacket") | import("mysql2/typings/mysql/lib/protocol/packets/ResultSetHeader") | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[] | import("mysql2/typings/mysql/lib/protocol/packets/RowDataPacket")[][] | import("mysql2/typings/mysql/lib/protocol/packets/OkPacket")[]>; } export { Options, Connection, Database };