package xtools.boot.storage.base.service;

import jakarta.validation.constraints.NotNull;

import java.io.InputStream;
import java.io.OutputStream;

/**
 * <p>Title : StorageService</p>
 * <p>Description : StorageService</p>
 * <p>DevelopTools : Idea_x64_v2026.1</p>
 * <p>DevelopSystem : macOS Sequoia 15.7.5</p>
 * <p>Company : org.xujun</p>
 *
 * @author : XuJun
 * @version : 5.0.0
 * @date : 2026/3/14 07:20
 */
public interface StorageService {

    /**
     * 是否存在文件
     *
     * @param bucket   桶
     * @param fileName 文件名
     * @return true or false
     */
    boolean exists(
            @NotNull String bucket,
            @NotNull String fileName
    );

    /**
     * 保存文件
     *
     * @param bucket        桶
     * @param fileName      文件名
     * @param inputStream   输入流
     * @param contentLength 文件长度
     */
    void save(
            @NotNull String bucket,
            @NotNull String fileName,
            @NotNull InputStream inputStream,
            long contentLength
    );

    /**
     * 获取文件
     *
     * @param bucket       桶
     * @param fileName     文件名
     * @param outputStream 输出流
     */
    void get(
            @NotNull String bucket,
            @NotNull String fileName,
            @NotNull OutputStream outputStream
    );

    /**
     * 删除文件
     *
     * @param bucket   桶
     * @param fileName 文件名
     */
    void del(
            @NotNull String bucket,
            @NotNull String fileName
    );

}
