/** * 内存存储适配器实现 * 将数据存储在内存中的适配器,适用于测试和开发环境 */ import { StorageAdapter, StorageConfig, QueryCondition, SortOption } from '../../interfaces/StorageAdapter'; /** * 内存存储适配器配置接口 */ export interface MemoryStorageConfig extends StorageConfig { /** * 是否在初始化时清空数据 */ clearOnInitialize?: boolean; /** * 数据项的默认TTL(毫秒),设置为0表示永不过期 */ defaultTTL?: number; /** * 是否启用数据项过期检查 */ enableTTLCheck?: boolean; } /** * 内存存储适配器类 */ export declare class MemoryStorageAdapter implements StorageAdapter { /** * 内存数据存储,以namespace为键,Map为值 */ private dataStore; /** * 配置项 */ private config; /** * 是否已初始化 */ private initialized; /** * TTL清理定时器ID */ private ttlCleanupTimer; /** * 初始化适配器 * @param config 适配器配置 */ initialize(config?: any): Promise; /** * 关闭适配器 */ close(): Promise; /** * 创建新数据项 * @param namespace 命名空间 * @param data 数据对象 * @returns 创建的数据对象,包含ID */ create(namespace: string, data: Partial): Promise; /** * 根据ID获取数据项 * @param namespace 命名空间 * @param id 数据项ID * @returns 数据项,如果不存在则返回null */ getById(namespace: string, id: string): Promise; /** * 查找符合条件的数据项 * @param namespace 命名空间 * @param query 查询条件 * @param skip 跳过的记录数 * @param limit 返回的最大记录数 * @param sort 排序条件 * @returns 查询结果数组和总数 */ find(namespace: string, query?: QueryCondition, skip?: number, limit?: number, sort?: SortOption): Promise<{ data: T[]; total: number; }>; /** * 更新数据项 * @param namespace 命名空间 * @param id 数据项ID * @param data 更新的数据 * @returns 更新后的数据项,如果不存在则返回null */ update(namespace: string, id: string, data: Partial): Promise; /** * 删除数据项 * @param namespace 命名空间 * @param id 数据项ID * @returns 是否成功删除 */ delete(namespace: string, id: string): Promise; /** * 批量创建数据项 * @param namespace 命名空间 * @param dataList 数据对象数组 * @returns 创建的数据对象数组,包含ID */ bulkCreate(namespace: string, dataList: Partial[]): Promise; /** * 检查适配器是否可用 * @returns 是否可用 */ isAvailable(): Promise; /** * 确保适配器已初始化 */ private ensureInitialized; /** * 确保命名空间存在 * @param namespace 命名空间 */ private ensureNamespaceExists; /** * 应用查询条件过滤数据 * @param items 数据项数组 * @param query 查询条件 * @returns 过滤后的数据项数组 */ private applyQuery; /** * 应用排序条件 * @param items 数据项数组 * @param sort 排序条件 * @returns 排序后的数据项数组 */ private applySort; /** * 启动TTL清理任务 */ private startTTLCleanup; /** * 清理过期的数据项 */ private cleanupExpiredItems; }