/** * 配置服务 - 管理多数据库连接配置 * 借鉴 DatabaseMcpServer 的设计,支持 JSON 配置文件和环境变量 */ import type { DbConfig } from '../types/adapter.js'; import type { SSHConfig } from '../types/ssh.js'; /** * 单个数据库连接配置 */ export interface DatabaseConnection { /** 连接名称(唯一标识) */ name: string; /** 数据库类型 */ type: DbConfig['type']; /** 主机地址 */ host?: string; /** 端口 */ port?: number; /** 用户名 */ user?: string; /** 密码(支持 ${ENV_VAR} 格式的环境变量引用) */ password?: string; /** 数据库名称 */ database?: string; /** SQLite 文件路径 */ filePath?: string; /** MongoDB 认证数据库 */ authSource?: string; /** MongoDB 连接字符串(支持集群/Replica Set,优先于 host/port 拼接) */ uri?: string; /** 连接描述 */ description?: string; /** 是否为默认连接 */ isDefault?: boolean; /** SSH 隧道配置 */ ssh?: SSHConfig; } /** * 完整配置文件结构 */ export interface DatabasesConfig { /** 数据库连接列表 */ databases: DatabaseConnection[]; /** 全局设置 */ settings?: { /** 是否允许写操作(默认 false) */ allowWrite?: boolean; /** DDL 白名单正则表达式列表 */ ddlWhitelist?: string[]; /** 日志级别 */ logLevel?: 'debug' | 'info' | 'warn' | 'error'; }; } /** * 配置服务类 * 负责加载、解析和管理多数据库配置 */ export declare class ConfigService { private connections; private currentDatabaseName; private settings; /** * 从 JSON 或 YAML 文件加载配置 * @param configPath 配置文件路径 * @throws 如果文件不存在或格式错误 */ loadFromFile(configPath: string): void; /** * 从单数据库 CLI 参数创建配置(向后兼容) * @param config 单数据库配置 */ loadFromSingleConfig(config: DbConfig): void; /** * 获取当前活动的数据库连接配置 * @returns 当前数据库连接配置 * @throws 如果没有配置任何数据库 */ getCurrentConnection(): DatabaseConnection; /** * 根据名称获取数据库连接配置 * @param name 连接名称 * @returns 数据库连接配置 * @throws 如果连接不存在 */ getConnection(name: string): DatabaseConnection; /** * 切换当前活动的数据库 * @param name 目标数据库连接名称 * @returns 切换是否成功 */ switchDatabase(name: string): boolean; /** * 获取当前数据库名称 */ getCurrentDatabaseName(): string | null; /** * 列出所有可用的数据库连接 * @returns 数据库连接列表(隐藏密码) */ listDatabases(): Array<{ name: string; type: string; description?: string; isDefault: boolean; isCurrent: boolean; }>; /** * 获取全局设置 */ getSettings(): DatabasesConfig['settings']; /** * 是否允许写操作 */ isAllowWrite(): boolean; /** * 获取 DDL 白名单 */ getDdlWhitelist(): string[]; /** * 将数据库连接转换为 DbConfig 格式 * @param connection 数据库连接配置 * @returns DbConfig 格式的配置 */ toDbConfig(connection?: DatabaseConnection): DbConfig; /** * 解析配置中的环境变量引用 * 支持 ${VAR_NAME} 格式 */ private resolveEnvVariables; /** * 解析字符串中的环境变量引用 * @param value 可能包含 ${VAR_NAME} 的字符串 * @returns 替换后的字符串 */ private resolveEnvString; } export declare const configService: ConfigService; //# sourceMappingURL=config-service.d.ts.map