package org.qinan.safetyeval.domain.gateway;

import org.qinan.safetyeval.domain.entity.FileStorage;

import java.util.List;

/**
 * 文件资源Gateway接口（Domain层定义）
 *
 * @author safety-eval
 */
public interface ResourceGateway {

    /**
     * 保存文件资源元信息
     */
    FileStorage save(FileStorage fileStorage);

    /**
     * 批量保存文件资源元信息
     */
    List<FileStorage> saveBatch(List<FileStorage> fileStorages);

    /**
     * 根据ID查询
     */
    FileStorage get(Integer id);

    /**
     * 根据文件名查询
     */
    FileStorage getByFilename(String filename);

    /**
     * 根据URL查询
     */
    FileStorage getByUrl(String url);

    /**
     * 根据ID删除
     */
    void delete(Integer id);

    /**
     * 批量根据ID删除
     */
    void deleteBatch(List<Integer> ids);

    /**
     * 更新资源信息
     */
    FileStorage update(FileStorage fileStorage);

    /**
     * 查询所有资源列表
     */
    List<FileStorage> listAll();

    /**
     * 根据创建者查询
     */
    List<FileStorage> listByCreator(String creatorUid);
}
