ts-api-core
Version:
Nodejs api framework core
87 lines (86 loc) • 3.6 kB
TypeScript
import { PoolConnection } from "mysql";
import { ClassType } from "../base/type";
import { IMySQLConfig } from './db.mysql.config';
/** 数据库查询原始返回数据回调 */
export declare type DBRawResult = (results: any, insertId: number, affectedRows: number, rows: any[] | undefined) => void;
/**
* 数据库管理器
*/
export declare class DBManager {
protected config: IMySQLConfig;
protected conn?: PoolConnection;
/**
* 构造函数
* @param sqlModel 传入SQL模型
* @param dataSyncWorker 连接服务
*/
constructor(config: IMySQLConfig);
/** 销毁连接 */
destroy(): void;
/** 释放连接 */
release(): void;
/**
* 初始化数据库连接 (每次访问con之前都应该调用一下)
*/
protected initConnection(): Promise<[boolean, PoolConnection]>;
private doRawResult;
/**
* 执行SQL, 返回真实的数据
* @param sql
* @param params
*/
query(sql: string, values?: any[], onRaw?: DBRawResult): Promise<any>;
/**
* 执行SQL, 返回第1行数据指定字段或第1个字段的值
* @param sql
* @param values
* @param fieldName
*/
queryValue<T = number | string>(sql: string, values?: any[], fieldName?: string, defaultValue?: T, onRaw?: DBRawResult): Promise<T | undefined>;
/**
* 执行SQL, 返回指定字段的值的数组
* @param sql
* @param values
* @param fieldName 字段名称,或需要的字段数量(从第1个字段开始算)
*/
queryValues<T = number | string>(sql: string, values?: any[], fieldName?: string[] | number, defaultValue?: (T | undefined)[], onRaw?: DBRawResult): Promise<(T | undefined)[]>;
/**
* 执行SQL查询
* @param sql
* @param values
*/
queryData<T>(classType: ClassType<T> | undefined, sql: string, values?: any[], onRaw?: DBRawResult): Promise<T | undefined>;
/**
* 执行查询, 返回 Array
* @param sql sql 语句
* @param values 查询参数
*/
queryDatas<T>(classType: ClassType<T>, sql: string, values?: any[], onRaw?: DBRawResult): Promise<T[]>;
/**
* 执行查询, 返回 [Array, Count]
* @param sql sql 语句
* @param values 查询参数
* @param countSql 获取总行数的 sql (不设置会自动生成,但某些复杂或特殊情况可能会出错,比如字段列表中中带子查询等),总行数字段名 `rowCount`
*/
queryDatasAndCount<T>(classType: ClassType<T>, sql: string, values?: any[], countSql?: string, onRaw?: DBRawResult): Promise<[T[], number]>;
/**
* 执行SQL语句,返回受影响的行数
* @param sql
* @param values
* @returns 返回值 < 0 说明更新失败, = 0 说明没有更改任何数据
*/
execute(sql: string, values?: any[], onRaw?: DBRawResult): Promise<number>;
/**
* 执行SQL插入语句,返回插入成功后的主键ID
* @param sql
* @param values 插入失败返回 `undefined`
*/
insert(sql: string, values?: any[], onRaw?: DBRawResult): Promise<number | undefined>;
private _trans;
/**
* 开启事务,在回调中执行 query ,出错自动回滚,正确执行时自动提交事务
* @param callback 事务回调
* @param onFinish 事务执行完成回调
*/
transaction<T>(callback?: (db: DBManager) => Promise<T>, onFinish?: (value: T | undefined, useTime: number, flag: boolean) => void): Promise<T>;
}