package com.datamate.datamanagement.infrastructure.persistence.repository;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.repository.IRepository;
import com.datamate.datamanagement.domain.model.dataset.DatasetFile;

import java.util.List;

/**
 * 数据集文件仓储接口
 *
 * @author dallas
 * @since 2025-10-15
 */
public interface DatasetFileRepository extends IRepository<DatasetFile> {
    Long countByDatasetId(String datasetId);

    Long countCompletedByDatasetId(String datasetId);

    Long sumSizeByDatasetId(String datasetId);

    List<DatasetFile> findAllByDatasetId(String datasetId);

    DatasetFile findByDatasetIdAndFileName(String datasetId, String fileName);

    IPage<DatasetFile> findByCriteria(String datasetId, String fileType, String status, String name,
                                      Boolean hasAnnotation, IPage<DatasetFile> page);

    int updateFilePathPrefix(String datasetId, String oldPrefix, String newPrefix);

    /**
     * 查询数据集中所有作为衍生文件源文件的ID列表
     * 通过查询 metadata 中包含 derived_from_file_id 的记录，返回所有源文件ID
     *
     * @param datasetId 数据集ID
     * @return 源文件ID列表
     */
    List<String> findSourceFileIdsWithDerivedFiles(String datasetId);
}
