using FileShare_Common.Core; namespace FileShare_Services.Services.FileLibrary { /// /// 文件库核心业务服务接口,提供磁盘枚举、目录管理、文件扫描与检索功能。 /// public interface IFileLibraryService { /// /// 获取服务器所有磁盘驱动器信息。 /// /// 取消令牌。 /// 驱动器信息列表。 Task> GetDrivesAsync(CancellationToken cancellationToken = default); /// /// 获取指定路径下的子目录列表。 /// /// 父目录路径,为空时返回根目录。 /// 取消令牌。 /// 子目录信息列表。 Task> GetDirectoriesAsync(string? path, CancellationToken cancellationToken = default); /// /// 获取所有已注册的文件库根目录及其文件数量。 /// /// 取消令牌。 /// 文件库根目录列表。 Task> GetRootsAsync(CancellationToken cancellationToken = default); /// /// 添加新的文件库根目录,如已存在则激活并重新扫描。 /// /// 包含路径、显示名称和扫描间隔的请求。 /// 取消令牌。 /// 新添加或已存在的根目录信息。 Task AddRootAsync(AddLibraryRootRequest request, CancellationToken cancellationToken = default); /// /// 启用或禁用指定的文件库根目录。 /// /// 包含根目录 ID 和目标启用状态的请求。 /// 取消令牌。 /// 更新后的根目录信息。 Task SetRootEnabledAsync(UpdateLibraryRootRequest request, CancellationToken cancellationToken = default); /// /// 删除指定的文件库根目录。 /// /// 包含根目录 ID 的请求。 /// 取消令牌。 Task DeleteRootAsync(DeleteLibraryRootRequest request, CancellationToken cancellationToken = default); /// /// 立即扫描指定根目录,枚举所有支持的媒体文件并更新数据库。 /// /// 根目录 ID。 /// 取消令牌。 /// 扫描后的根目录信息。 Task ScanRootAsync(int rootId, CancellationToken cancellationToken = default); /// /// 扫描所有已到期(距上次扫描超过间隔时间)的根目录。 /// /// 取消令牌。 Task ScanDueRootsAsync(CancellationToken cancellationToken = default); /// /// 分页搜索已扫描的文件记录,支持按媒体类型、关键词和根目录过滤。 /// /// 包含分页和过滤条件的请求。 /// 取消令牌。 /// 分页文件记录响应。 Task> SearchFilesAsync(SearchFilesRequest request, CancellationToken cancellationToken = default); /// /// 根据 ID 获取单个文件的记录信息。 /// /// 文件记录 ID。 /// 取消令牌。 /// 文件记录 DTO,不存在时返回 null。 Task GetFileAsync(int id, CancellationToken cancellationToken = default); /// /// 获取文本文件的预览内容(最多 1 MB)。 /// /// 文件记录 ID。 /// 取消令牌。 /// 文本预览 DTO,文件不存在或非文本类型时返回 null。 Task GetTextPreviewAsync(int id, CancellationToken cancellationToken = default); /// /// 浏览指定根目录下的目录结构和文件列表。 /// /// 包含根目录 ID 和路径的请求。 /// 取消令牌。 /// 目录浏览响应,包含子目录和文件列表。 Task BrowseDirectoryAsync(BrowseDirectoryRequest request, CancellationToken cancellationToken = default); Task> GetRecentFilesAsync(string type, int count = 12, CancellationToken cancellationToken = default); Task MarkFilePlayedAsync(int id, CancellationToken cancellationToken = default); } }