/** * 通用接口定义文件 */ import { StorageConfig, QueryCondition, SortOption } from './StorageAdapter'; export interface DatabaseConfig { url?: string; host?: string; port?: number; database?: string; username?: string; password?: string; [key: string]: any; } /** * 通用持久化配置接口 * 用于服务层和管理层的统一配置 */ export interface PersistenceConfig { /** * 存储类型 */ storageType: string; /** * 存储配置详情 */ storageConfig: StorageConfig; /** * 是否启用缓存 */ enableCache?: boolean; /** * 缓存配置 */ cacheConfig?: { ttl?: number; maxSize?: number; }; } export interface DomainManagerConfig { /** * 持久化配置 */ persistence: PersistenceConfig; /** * 其他可选配置参数 */ options?: { validateData?: boolean; autoTimestamp?: boolean; }; } export interface DomainQuery { /** * 按域名名称模糊匹配 */ name?: string; /** * 按记录类型过滤 */ recordType?: string | string[]; /** * 按启用状态过滤 */ enabled?: boolean; /** * 按管理员过滤 */ admin?: string; /** * 按标签过滤 */ tags?: string | string[]; /** * 按目标地址过滤 */ targetAddress?: string; /** * 创建时间范围过滤 */ createdAt?: { $gte?: Date | string; $lte?: Date | string; }; /** * 更新时间范围过滤 */ updatedAt?: { $gte?: Date | string; $lte?: Date | string; }; } export interface QueryOptions { /** * 排序条件 */ sort?: SortOption; /** * 限制返回结果数量 */ limit?: number; /** * 结果偏移量,用于分页 */ offset?: number; /** * 投影,指定要返回的字段 */ projection?: Record; } export interface DomainQueryResult { data: T[]; total: number; page: number; pageSize: number; totalPages: number; } export { StorageConfig, QueryCondition, SortOption };