@slsplus/database
Version:
Serverless Database Tool
104 lines (103 loc) • 4.15 kB
TypeScript
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 };