/** * 达梦数据库适配器 * 达梦数据库高度兼容 Oracle,使用类似的 API 和系统视图 * * dmdb 驱动会作为可选依赖自动安装 * * 性能优化:使用批量查询获取 Schema 信息,避免 N+1 查询问题 * * 连接管理:使用心跳保活 + 断线自动重连 + 操作自动重试,确保长连接稳定性 */ import type { DbAdapter, QueryResult, SchemaInfo } from '../types/adapter.js'; export declare class DMAdapter implements DbAdapter { private connection; private heartbeatTimer; private connectionConfig; private config; constructor(config: { host: string; port: number; user?: string; password?: string; database?: string; }); private isConnectionError; private reconnect; private startHeartbeat; private stopHeartbeat; private withRetry; /** * 连接到达梦数据库 */ connect(): Promise; /** * 断开数据库连接 */ disconnect(): Promise; /** * 执行 SQL 查询 */ executeQuery(query: string, params?: unknown[]): Promise; /** * 获取数据库结构信息(批量查询优化版本) * * 达梦数据库中: * - database 是数据库实例名(如 DAMENG) * - schema 是用户的命名空间(通常与用户名相同,如 SHOP) * - 表存储在 schema 下,不是 database 下 * * 注意:dmdb 驱动返回的列名是数字索引("0", "1", ...),不是列名! * 因此需要按索引位置访问数据。 */ getSchema(): Promise; private _getSchemaImpl; /** * 按索引获取对象的值(dmdb 驱动返回的列名是数字索引) */ private getValueByIndex; private makeTableKey; /** * 组装 Schema 信息(处理 dmdb 驱动返回的数字索引列名) */ private assembleSchemaFromIndexedRows; /** * 格式化达梦数据类型 */ private formatDMType; /** * 检查是否为写操作 */ isWriteOperation(query: string): boolean; } //# sourceMappingURL=dm.d.ts.map