UNPKG

ts-api-core

Version:

Nodejs api framework core

87 lines (86 loc) 3.6 kB
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>; }