package com.backendsys.modules.upload.service;

import com.backendsys.modules.upload.entity.SysFile;
import com.backendsys.modules.upload.entity.SysFileMergeByMd5;
import com.backendsys.modules.upload.entity.SysFileResult;
import com.backendsys.modules.upload.utils.ObjectKey.ObjectKeyEntity;
import com.backendsys.utils.response.PageEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

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

public interface SysFileService extends IService<SysFile> {

    // 获取文件列表
    PageEntity selectUploadFileList(SysFile sysFile);
    Map<String, Object> selectUploadTarget();

    // 上传文件 (单文件大小不超过 n)
    SysFile uploadSmall(MultipartFile file, Long category_id, Integer is_watermark);

    // 删除文件
    Map<String, Object> removeUploadFile(SysFile sysFile, SysFile querySysFile);

    // 删除文件 (批量)
    Map<String, Object> removeUploadFileBatch(SysFile sysFile, List<SysFile> querySysFileList);

    // 编辑文件
    Map<String, Object> updateUploadFile(SysFile sysFile);

    // 编辑文件 (批量)
    Map<String, Object> updateUploadFileBatch(SysFile sysFile);

    // URL转存
    SysFileResult urlToUploadFile(String origin_url, Long user_id);

    // 根据 MD5 获取文件列表 (我的)
    List<Map<String, Object>> getUploadFileListByMd5(SysFile sysFile);
    // 合并重复 MD5 文件
    Map<String, Object> mergeFileByMd5(SysFileMergeByMd5 sysFileMergeByMd5);

    // 删除存储桶对象 (单个)
    void deleteObject(String object_key, Integer target);
    void deleteObjects(List<ObjectKeyEntity> list);

}
