koishi-plugin-best-cave
Version:
回声洞,可自由添加内容,可配置 MD5/pHash 查重,支持查阅投稿列表(可用但等待重构)
64 lines (63 loc) • 1.81 kB
TypeScript
export declare class FileHandler {
private static locks;
private static readonly RETRY_COUNT;
private static readonly RETRY_DELAY;
private static readonly CONCURRENCY_LIMIT;
/**
* 并发控制
* @param operation 要执行的操作
* @param limit 并发限制
* @returns 操作结果
*/
private static withConcurrencyLimit;
/**
* 文件操作包装器
* @param filePath 文件路径
* @param operation 要执行的操作
* @returns 操作结果
*/
private static withFileOp;
/**
* 事务处理
* @param operations 要执行的操作数组
* @returns 操作结果数组
*/
static withTransaction<T>(operations: Array<{
filePath: string;
operation: () => Promise<T>;
rollback?: () => Promise<void>;
}>): Promise<T[]>;
/**
* 读取 JSON 数据
* @param filePath 文件路径
* @returns JSON 数据
*/
static readJsonData<T>(filePath: string): Promise<T[]>;
/**
* 写入 JSON 数据
* @param filePath 文件路径
* @param data 要写入的数据
*/
static writeJsonData<T>(filePath: string, data: T[]): Promise<void>;
/**
* 确保目录存在
* @param dir 目录路径
*/
static ensureDirectory(dir: string): Promise<void>;
/**
* 确保 JSON 文件存在
* @param filePath 文件路径
*/
static ensureJsonFile(filePath: string): Promise<void>;
/**
* 保存媒体文件
* @param filePath 文件路径
* @param data 文件数据
*/
static saveMediaFile(filePath: string, data: Buffer | string): Promise<void>;
/**
* 删除媒体文件
* @param filePath 文件路径
*/
static deleteMediaFile(filePath: string): Promise<void>;
}