/** * 数据库适配器工厂类 - 向后兼容层 * 为了兼容旧代码,提供与StorageFactory的桥接 */ import { DatabaseAdapter } from './DatabaseAdapter'; import { DatabaseConfig } from '../interfaces/common'; import { DatabaseError } from '../exceptions/DatabaseError'; import { StorageFactory } from './StorageFactory'; import { StorageAdapter } from '../interfaces/StorageAdapter'; import { DatabaseAdapterBridge } from './DatabaseAdapterBridge'; import { storagePluginLoader } from './StoragePluginLoader'; /** * 数据库类型枚举 */ export enum DatabaseType { SQLite = 'sqlite', MySQL = 'mysql', PostgreSQL = 'postgresql', MongoDB = 'mongodb', Memory = 'memory' } /** * 适配器工厂类 * 用于创建数据库适配器实例,内部使用StorageFactory实现 */ export class AdapterFactory { /** * 创建数据库适配器实例 * @param type 数据库类型 * @returns 数据库适配器实例 */ public static createAdapter(type: DatabaseType): DatabaseAdapter { try { // 首先尝试加载所有可用的存储插件 storagePluginLoader.loadPlugins([]); // 使用新的StorageFactory创建适配器 const storageAdapter: StorageAdapter = StorageFactory.createAdapter( type.toString() ); // 将新的StorageAdapter适配到旧的DatabaseAdapter接口 return new DatabaseAdapterBridge(storageAdapter as any); } catch (error) { throw new DatabaseError( `Failed to create database adapter of type "${type}": ${error instanceof Error ? error.message : String(error)}` ); } } /** * 根据配置创建数据库适配器实例 * @param config 数据库配置 * @returns 数据库适配器实例 */ public static createAdapterFromConfig(config: DatabaseConfig): DatabaseAdapter { try { // 首先尝试加载所有可用的存储插件 storagePluginLoader.loadPlugins([]); // 使用新的StorageFactory创建适配器 const storageAdapter: StorageAdapter = StorageFactory.createAdapter( (config.type || DatabaseType.SQLite).toString() ); // 将新的StorageAdapter适配到旧的DatabaseAdapter接口 return new DatabaseAdapterBridge(storageAdapter as any); } catch (error) { throw new DatabaseError( `Failed to create database adapter from config: ${error instanceof Error ? error.message : String(error)}` ); } } }