///
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?);
}