/**
 * @ProjectName: 智慧评标-主观分助手
 * @Package: com.zhpb.gdyd_zhpb_zgf.repository.mysql
 * @ClassName: FileDirectoryRepository
 * @Description: 文件目录Repository
 * @Author: 张志锋
 * @Date: 2025-11-03
 * @Version: 1.0
 * @Copyright: © 2025 智慧评标-主观分助手
 */
package com.zhpb.gdyd_zhpb_zgf.repository.mysql;

import com.zhpb.gdyd_zhpb_zgf.entity.mysql.FileDirectory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 文件目录Repository
 */
@Repository
public interface FileDirectoryRepository extends JpaRepository<FileDirectory, Long> {

    /**
     * 根据文件ID查找目录结构
     */
    List<FileDirectory> findByFileIdOrderBySortOrderAsc(String fileId);

    /**
     * 根据文件ID和父章节ID查找子章节
     */
    List<FileDirectory> findByFileIdAndParentChapterIdOrderBySortOrderAsc(String fileId, String parentChapterId);

    /**
     * 根据文件ID和章节ID查找章节
     */
    FileDirectory findByFileIdAndChapterId(String fileId, String chapterId);

    /**
     * 根据文件ID删除所有目录
     */
    @Modifying
    @Query("DELETE FROM FileDirectory fd WHERE fd.fileId = :fileId")
    void deleteByFileId(@Param("fileId") String fileId);

    /**
     * 根据文件ID统计章节数量
     */
    long countByFileId(String fileId);

    /**
     * 根据文件ID查找顶级章节（无父章节）
     */
    List<FileDirectory> findByFileIdAndParentChapterIdIsNullOrderBySortOrderAsc(String fileId);

    /**
     * 查询摘要为空或为null的目录记录
     * 用于定时任务扫描需要生成摘要的章节
     */
    @Query("SELECT fd FROM FileDirectory fd WHERE fd.summary IS NULL OR fd.summary = '' ORDER BY fd.createTime ASC")
    List<FileDirectory> findBySummaryIsNullOrEmpty();
}
