package cn.meowrain.aioj.backend.fileservice.config;

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

/**
 * 文件存储配置属性
 *
 * @author meowrain
 * @since 2026-01-10
 */
@Component
@Data
@ConfigurationProperties(prefix = FileConfigurationProperties.PREFIX)
public class FileConfigurationProperties {
    static final String PREFIX = "file-config";

    /**
     * 是否使用云存储
     */
    private boolean useCloud = false;

    /**
     * 本地存储配置
     */
    private Local local = new Local();

    /**
     * 腾讯云COS存储配置
     */
    private Cos cos = new Cos();

    @Data
    public static class Local {
        /**
         * 本地存储基础路径
         */
        private String basePath = "uploads";

        /**
         * 访问域名
         */
        private String domain = "http://localhost:10013/api";

        /**
         * URL前缀
         */
        private String urlPrefix = "/file";
    }

    @Data
    public static class Cos {
        /**
         * 是否启用COS
         */
        private boolean enabled = false;

        /**
         * 腾讯云SecretId
         */
        private String secretId;

        /**
         * 腾讯云SecretKey
         */
        private String secretKey;

        /**
         * 区域，如ap-guangzhou、ap-beijing等
         */
        private String region;

        /**
         * 存储桶名称
         */
        private String bucketName;

        /**
         * 访问域名（可选，如果配置则使用该域名生成访问URL）
         */
        private String domain;

        /**
         * 文件前缀
         */
        private String prefix = "";

        /**
         * 预签名URL过期时间（秒）
         */
        private Integer presignedUrlExpireSeconds = 3600;
    }
}
