package com.bjtds.brichat.service; import com.bjtds.brichat.entity.dataset.TDatasetFiles; import com.bjtds.common.utils.Pagination; import java.util.List; /** * 知识库文件/文件夹业务层接口 * * @author system */ public interface DatasetFilesService { /** * 根据知识库id和parent_id 分页查询 文件/文件夹 * * @param difyDatasetId 知识库ID * @param parentId 父目录ID * @param fileName 文件名(支持模糊查询,可选) * @param orderBy 排序字段 (name, size, created_at, updated_at) * @param orderDirection 排序方向 (ASC, DESC) * @param pageNo 页码 * @param pageSize 页大小 * @return 分页结果 */ Pagination getFilesByDatasetIdAndParentId(String difyDatasetId, Long parentId, String fileName, String orderBy, String orderDirection, Integer pageNo, Integer pageSize); /** * 根据知识库id和name查询 文件/文件夹 * * @param difyDatasetId 知识库ID * @param name 文件/文件夹名称(支持模糊查询) * @param orderBy 排序字段 * @param orderDirection 排序方向 * @param pageNo 页码 * @param pageSize 页大小 * @return 分页结果 */ Pagination getFilesByDatasetIdAndName(String difyDatasetId, String name, String orderBy, String orderDirection, Integer pageNo, Integer pageSize); /** * 根据ID查询文件/文件夹详情 * * @param id 文件/文件夹ID * @return 文件/文件夹信息 */ TDatasetFiles getFileById(Integer id); /** * 创建文件/文件夹 * * @param datasetFiles 文件/文件夹信息对象 * @return 创建的文件/文件夹信息 */ TDatasetFiles createFile(TDatasetFiles datasetFiles); /** * 删除文件/文件夹(逻辑删除) * * @param id 文件/文件夹ID * @return 是否删除成功 */ boolean deleteFile(Integer id); /** * 重命名文件/文件夹 * * @param id 文件/文件夹ID * @param newName 新名称 * @return 是否重命名成功 */ boolean renameFile(Integer id, String newName); /** * 检查同一父目录下是否存在同名文件/文件夹 * * @param parentId 父目录ID * @param name 文件/文件夹名称 * @param difyDatasetId 知识库ID * @param excludeId 排除的ID(用于重命名时排除自己) * @return 是否存在同名文件/文件夹 */ boolean checkNameExists(Long parentId, String name, String difyDatasetId, Integer excludeId); /** * 根据路径查询文件/文件夹 * * @param path 路径 * @param difyDatasetId 知识库ID * @return 文件/文件夹信息 */ TDatasetFiles getFileByPath(String path, String difyDatasetId); /** * 更新文件/文件夹信息 * * @param datasetFiles 文件/文件夹信息 * @return 是否更新成功 */ boolean updateFile(TDatasetFiles datasetFiles); /** * 构建文件完整路径 * * @param parentPath 父目录路径 * @param fileName 文件名 * @return 完整路径 */ String buildFilePath(String parentPath, String fileName); /** * 获取父目录路径 * * @param parentId 父目录ID * @param difyDatasetId 知识库ID * @return 父目录路径,如果是根目录返回空字符串 */ String getParentPath(Long parentId, String difyDatasetId); /** * 获取指定文件夹下的所有文件(不包含文件夹,递归查询) * * @param parentId 文件夹ID * @param difyDatasetId 知识库ID * @return 文件列表 */ List getAllFilesByParentId(Long parentId, String difyDatasetId); /** * 物理删除文件/文件夹(真实删除数据库记录) * * @param id 文件/文件夹ID * @return 是否删除成功 */ boolean physicalDeleteFile(Integer id); /** * 根据父目录ID物理删除所有子文件/文件夹 * * @param parentId 父目录ID * @return 是否删除成功 */ boolean physicalDeleteFilesByParentId(Long parentId); }