package org.qinan.safetyeval.client.api;

import org.qinan.safetyeval.client.co.FileInfoCO;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文件上传接口定义（Client层）
 * <p>
 * 提供公开/内部两种文件上传方式。上传完成后自动同步元信息到 filestorage 表。
 * </p>
 *
 * @author safety-eval
 */
public interface FileUploadApi {

    /**
     * 公开上传单个文件（创建人默认为 system）
     *
     * @param file 上传的文件
     * @return 文件信息
     */
    SingleResponse<FileInfoCO> uploadPublic(MultipartFile file);

    /**
     * 公开批量上传文件（创建人默认为 system）
     *
     * @param files 上传的文件列表
     * @return 文件信息列表
     */
    SingleResponse<List<FileInfoCO>> uploadPublicBatch(List<MultipartFile> files);

    /**
     * 内部上传单个文件（创建人为当前登录用户）
     *
     * @param file 上传的文件
     * @return 文件信息
     */
    SingleResponse<FileInfoCO> uploadInternal(MultipartFile file);

    /**
     * 内部批量上传文件（创建人为当前登录用户）
     *
     * @param files 上传的文件列表
     * @return 文件信息列表
     */
    SingleResponse<List<FileInfoCO>> uploadInternalBatch(List<MultipartFile> files);
}
