package org.xyzh.file.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * @description 文件存储配置类
 * @filename FileStorageConfig.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-16
 */
@Data
@Component
@ConfigurationProperties(prefix = "file.storage")
public class FileStorageConfig {

    /**
     * @description 默认存储类型
     */
    private String defaultType = "local";

    /**
     * @description 存储配置列表
     */
    private List<StorageProperties> storages = new ArrayList<>();

    /**
     * @description 单个存储配置
     */
    @Data
    public static class StorageProperties {
        /**
         * @description 存储类型（local、minio）
         */
        private String type;

        /**
         * @description 是否启用
         */
        private Boolean enabled = true;

        /**
         * @description 本地存储基础路径
         */
        private String basePath;

        /**
         * @description 本地存储URL前缀
         */
        private String urlPrefix;

        /**
         * @description MinIO端点
         */
        private String endpoint;

        /**
         * @description MinIO访问密钥
         */
        private String accessKey;

        /**
         * @description MinIO密钥
         */
        private String secretKey;

        /**
         * @description MinIO桶名称
         */
        private String bucketName;
    }
}

