/// import events = require("events"); import mysql = require("mysql"); import { Callback, KVObject } from "./define"; export interface WrappedConnection { /** * 执行查询 * @param sql SQL 语句 * @param values 模板变量 * @param callback 回调函数 */ query(sql: string, values?: any[], callback?: (err: Error, ret: any) => void): Promise; /** * 值转义 */ escape(value: any): string; /** * 标志符转义 */ escapeId(value: string): string; /** * 开始事务 * @param callback 回调函数 */ beginTransaction(callback?: (err: Error) => void): Promise; /** * 提交事务 * @param callback 回调函数 */ commit(callback?: (err: Error) => void): Promise; /** * 回滚事务 * @param callback 回调函数 */ rollback(callback?: () => void): Promise; /** * 暂停 */ pause(): void; /** * 释放 */ release(): void; /** * 继续 */ resume(): void; } export interface ConnectionOptions { /** * MySQL 数据库连接数组,第一个为 master * 包含 { host, port, user, password, database, connectionLimit } * 参考 https://www.npmjs.com/package/mysql#connection-options * 和 https://www.npmjs.com/package/mysql#pool-options */ connections: mysql.IPoolConfig[]; } export declare class Connection extends events.EventEmitter { private _options; private _poolCluster; private _poolMaster; private _poolSlave; /** * 创建 Connection */ constructor(options: ConnectionOptions); /** * 关闭连接 */ close(): Promise; /** * 关闭连接 * @param callback 回调函数 */ close(callback: Callback): void; /** * 获取一个原始连接 */ getConnection(): Promise; /** * 获取一个原始连接 * @param callback 回调函数 */ getConnection(callback: Callback): void; /** * 获取一个 MASTER 连接 */ getMasterConnection(): Promise; /** * 获取一个 MASTER 连接 * @param callback 回调函数 */ getMasterConnection(callback: Callback): void; /** * 获取一个 SLAVE 连接 */ getSlaveConnection(): Promise; /** * 获取一个 SLAVE 连接 * @param callback 回调函数 */ getSlaveConnection(callback: Callback): void; /** * 智能查询,更新操作会在 MASTER 执行,其他在任意服务器查询 * @param sql 要执行的 SQL 查询语句 */ query(sql: string): Promise; /** * 智能查询,更新操作会在 MASTER 执行,其他在任意服务器查询 * @param sql 要执行的 SQL 查询语句 * @param callback 回调函数 */ query(sql: string, callback: Callback): void; /** * 在 MASTER 上执行查询 * @param sql 要执行的 SQL 查询语句 */ queryMaster(sql: string): Promise; /** * 在 MASTER 上执行查询 * @param sql 要执行的 SQL 查询语句 * @param callback 回调函数 */ queryMaster(sql: string, callback: Callback): void; /** * 在 SLAVE 上执行查询 * @param sql 要执行的 SQL 查询语句 */ querySlave(sql: string): Promise; /** * 在 SLAVE 上执行查询 * @param sql 要执行的 SQL 查询语句 * @param callback 回调函数 */ querySlave(sql: string, callback: Callback): void; /** * 值转义 */ escape(value: any): string; /** * 标志符转义 */ escapeId(value: string): string; /** * 以数组参数形式格式化查询 */ format(sql: string, values: any[]): string; /** * 以键值对参数形式格式化查询 */ format(sql: string, values: KVObject): string; /** * 获取一个原始连接(增加 Promise 支持) * @param pool 连接池 */ private _getConnection(pool); /** * 获取一个原始连接(增加 Promise 支持) * @param pool 连接池 * @param callback 回调函数 */ private _getConnection(pool, callback); /** * 执行 SQL 查询 * @param pool 连接池 * @param sql SQL 查询语句 */ private _query(pool, sql); /** * 执行 SQL 查询 * @param pool 连接池 * @param sql SQL 查询语句 * @param callback 回调函数 */ private _query(pool, sql, callback?); }