package tech.easyflow.skill.file;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.math.BigInteger;
import java.util.List;

/**
 * Skill 逻辑文件服务。
 */
public interface SkillFileService {

    /**
     * 获取 Skill 文件树。
     *
     * @param skillId Skill ID
     * @return 文件树
     */
    List<SkillFileNode> tree(BigInteger skillId);

    /**
     * 获取逻辑文件内容。
     *
     * @param skillId Skill ID
     * @param path 逻辑路径
     * @return 文件内容
     */
    SkillFileContent getContent(BigInteger skillId, String path);

    /**
     * 保存文本文件内容。
     *
     * @param request 保存请求
     * @return 保存后的文件内容
     */
    SkillFileContent saveContent(SkillFileSaveRequest request);

    /**
     * 删除逻辑文件。
     *
     * @param skillId Skill ID
     * @param path 逻辑路径
     */
    void deleteFile(BigInteger skillId, String path);

    /**
     * 上传 asset 文件。
     *
     * @param skillId Skill ID
     * @param path asset 逻辑路径
     * @param file 上传文件
     * @return asset 文件内容
     */
    SkillFileContent uploadAsset(BigInteger skillId, String path, MultipartFile file);

    /**
     * 打开 asset 输入流。
     *
     * @param skillId Skill ID
     * @param path asset 逻辑路径
     * @return asset 输入流
     */
    InputStream openAsset(BigInteger skillId, String path);
}

