package tech.easyflow.skill.gitimport;

import org.eclipse.jgit.lib.ObjectId;

import java.util.List;
import java.util.Map;

/**
 * 单次仓库读取期间的候选扫描数据。
 *
 * @param candidates 对外候选列表
 * @param filesByCandidate 候选对应的普通文件对象
 */
record SkillGitRepositoryScan(
        List<SkillGitScanResult.Candidate> candidates,
        Map<String, List<RepositoryFile>> filesByCandidate) {

    /**
     * 创建不可变扫描数据。
     */
    SkillGitRepositoryScan {
        candidates = List.copyOf(candidates);
        filesByCandidate = Map.copyOf(filesByCandidate);
    }

    /**
     * 固定提交中的普通文件对象。
     *
     * @param path 仓库相对路径
     * @param relativePath Skill 根目录相对路径
     * @param objectId Git Blob ID
     * @param size 原始字节数
     * @param fileModeBits Git 文件模式
     */
    record RepositoryFile(String path, String relativePath, ObjectId objectId,
                          long size, int fileModeBits) {
    }
}
