using FileShare_Common.Core;
using FileShare_Services.Core;
namespace FileShare_Services.Services.FileLibrary
{
///
/// 文件库 HTTP 端点服务接口,将 HTTP 请求适配到 业务层。
///
public interface IFileLibraryEndpointService
{
///
/// 获取服务器所有磁盘驱动器。
///
/// 端点上下文。
/// API 响应。
Task GetDrivesAsync(ServiceEndpointContext ctx);
///
/// 查询指定路径下的子目录。
///
/// 包含路径的查询请求。
/// API 响应。
Task GetDirectoriesAsync(DirectoryQueryRequest request);
///
/// 获取所有已注册的文件库根目录。
///
/// 端点上下文。
/// API 响应。
Task GetRootsAsync(ServiceEndpointContext ctx);
///
/// 添加新的文件库根目录。
///
/// 包含路径和配置的请求。
/// API 响应。
Task AddRootAsync(AddLibraryRootRequest request);
///
/// 启用或禁用指定的文件库根目录。
///
/// 包含根目录 ID 和目标状态的请求。
/// API 响应。
Task SetRootEnabledAsync(UpdateLibraryRootRequest request);
///
/// 删除指定的文件库根目录。
///
/// 包含根目录 ID 的请求。
/// API 响应。
Task DeleteRootAsync(DeleteLibraryRootRequest request);
///
/// 立即扫描指定文件库根目录。
///
/// 包含根目录 ID 的请求。
/// API 响应。
Task ScanRootAsync(ScanLibraryRootRequest request);
///
/// 分页搜索已扫描的文件记录。
///
/// 包含分页和过滤条件的请求。
/// API 响应。
Task SearchFilesAsync(SearchFilesRequest request);
///
/// 根据 ID 获取文件详情。
///
/// 包含文件 ID 的请求。
/// API 响应。
Task GetFileAsync(FileQueryRequest request);
///
/// 获取文本文件预览内容。
///
/// 包含文件 ID 的请求。
/// API 响应。
Task GetTextPreviewAsync(FileQueryRequest request);
///
/// 浏览文件库目录结构。
///
/// 包含根目录 ID 和路径的请求。
/// API 响应。
Task BrowseDirectoryAsync(BrowseDirectoryRequest request);
///
/// 获取最近添加或最近播放的文件列表。
///
/// 包含类型和数量的请求。
/// API 响应。
Task GetRecentFilesAsync(RecentFilesRequest request);
///
/// 标记文件为已播放,更新最近播放时间。
///
/// 包含文件 ID 的请求。
/// API 响应。
Task MarkFilePlayedAsync(MarkFilePlayedRequest request);
}
}