package com.schisandra.oss.infra.basic.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 实体类
 *
 * @author landaiqing
 * @since 2024-05-14 20:45:32
 */
@Data
@Table("schisandra_oss_ali")
public class SchisandraOssAli implements Serializable {

    /**
     *
     */
    @Id(value = "id", keyType = KeyType.Auto)
    private Long id;

    /**
     *
     */
    @Column("user_id")
    private Long userId;

    /**
     * OSS地址
     */
    @Column("endpoint")
    private String endpoint;

    /**
     * AccessKey ID
     */
    @Column("access_key_id")
    private String accessKeyId;

    /**
     * AccessKey Secret
     */
    @Column("access_key_secret")
    private String accessKeySecret;

    /**
     * security Token
     */
    @Column("security_token")
    private String securityToken;

    /**
     * Bucket名称
     */
    @Column("bucket_name")
    private String bucketName;

    /**
     * 数据存储路径
     */
    @Column("base_path")
    private String basePath;

    /**
     * 用户代理，指HTTP的User-Agent头。默认为aliyun-sdk-java。
     */
    @Column("user_agent")
    private String userAgent;

    /**
     * 请求失败后最大的重试次数。默认3次。
     */
    @Column("max_error_retry")
    private String maxErrorRetry;

    /**
     * 从连接池中获取连接的超时时间（单位：毫秒）。默认不超时。
     */
    @Column("connection_request_timeout")
    private Integer connectionRequestTimeout;

    /**
     * 建立连接的超时时间（单位：毫秒）。默认为50000毫秒。
     */
    @Column("connection_timeout")
    private Integer connectionTimeout;

    /**
     * Socket层传输数据的超时时间（单位：毫秒）。默认为50000毫秒。
     */
    @Column("socket_timeout")
    private Integer socketTimeout;

    /**
     * 允许打开的最大HTTP连接数。默认为1024
     */
    @Column("max_connections")
    private Integer maxConnections;

    /**
     * 连接TTL (生存时间)。Http连接由连接管理器用TTL缓存。
     */
    @Column("connection_TTL")
    private Long connectionTTL;

    /**
     * 是否使用com.aliyun.oss.common.comm.IdleConnectionReaper管理过期连接,默认开启
     */
    @Column("use_reaper")
    private String useReaper;

    /**
     * 连接空闲超时时间，超时则关闭连接（单位：毫秒）。默认为60000毫秒。
     */
    @Column("idle_connection_time")
    private Long idleConnectionTime;

    /**
     * 连接OSS所采用的协议（HTTP或HTTPS），默认为HTTP。
     */
    @Column("protocol")
    private String protocol;

    /**
     * 代理服务器主机地址。
     */
    @Column("proxy_host")
    private String proxyHost;

    /**
     * 代理服务器端口。
     */
    @Column("proxy_port")
    private String proxyPort;

    /**
     * 代理服务器验证的用户名。
     */
    @Column("proxy_username")
    private String proxyUsername;

    /**
     * 代理服务器验证的密码。
     */
    @Column("proxy_password")
    private String proxyPassword;

    /**
     * 代理服务器的域，该域可以执行NTLM认证
     */
    @Column("proxy_domain")
    private String proxyDomain;

    /**
     * 代理主机的NTLM身份验证服务器
     */
    @Column("proxy_workstation")
    private String proxyWorkstation;

    /**
     * 是否支持CNAME作为Endpoint，默认支持CNAME。
     */
    @Column("support_cname")
    private String supportCname;

    /**
     * 设置不可变排除的CName列表 ---- 任何以该列表中的项目结尾的域都不会进行Cname解析。
     */
    @Column("cname_exclude_list")
    private String cnameExcludeList;

    /**
     * 是否开启二级域名（Second Level Domain）的访问方式，默认不开启。
     */
    @Column("sld_enabled")
    private String sldEnabled;

    /**
     * 请求超时时间，单位：毫秒。默认情况下是5分钟。
     */
    @Column("request_timeout")
    private Integer requestTimeout;

    /**
     * 是否启用请求超时校验。默认情况下，它是禁用的。
     */
    @Column("request_timeout_enabled")
    private String requestTimeoutEnabled;

    /**
     * 设置慢请求的延迟阈值。如果请求的延迟大于延迟，则将记录该请求。默认情况下，阈值为5分钟。
     */
    @Column("slow_requests_threshold")
    private Long slowRequestsThreshold;

    /**
     * 设置默认的http头。所有请求头将自动添加到每个请求中。如果在请求中也指定了相同的请求头，则默认的标头将被覆盖。
     */
    @Column("default_headers")
    private String defaultHeaders;

    /**
     * 是否在上传和下载时启用CRC校验，默认启用
     */
    @Column("crc_check_enabled")
    private String crcCheckEnabled;

    /**
     * 所有请求设置签名版本
     */
    @Column("signature_version")
    private String signatureVersion;

    /**
     * 设置OSS服务端时间和本地时间之间的差异，以毫秒为单位。
     */
    @Column("tick_offset")
    private Long tickOffset;

    /**
     * 是否开启HTTP重定向。
     * 说明: Java SDK 3.10.1及以上版本支持设置是否开启HTTP重定向，默认开启。
     */
    @Column("redirect_enable")
    private String redirectEnable;

    /**
     * 是否开启SSL证书校验。
     * 说明: Java SDK 3.10.1及以上版本支持设置是否开启SSL证书校验，默认开启。
     */
    @Column("verify_SSL_enable")
    private String verifySSLEnable;

    /**
     * 是否开启日志记录连接池统计信息
     */
    @Column("log_connection_pool_stats")
    private String logConnectionPoolStats;

    /**
     * 是否使用系统属性值
     */
    @Column("use_system_property_values")
    private String useSystemPropertyValues;

    /**
     * 分片大小,默认5MB
     */
    @Column("part_size")
    private Integer partSize;

    /**
     * 并发线程数,默认等于CPU的核数
     */
    @Column("task_num")
    private Integer taskNum;

    /**
     * 状态
     */
    @Column("status")
    private String status;

    /**
     * 是否开启高级设置
     */
    @Column("open_advanced_setup")
    private String openAdvancedSetup;

    /**
     * 创建人
     */
    @Column("created_by")
    private String createdBy;

    /**
     * 创建时间
     */
    @Column("created_time")
    private Date createdTime;

    /**
     * 更新时间
     */
    @Column("update_time")
    private Date updateTime;

    /**
     * 更新人
     */
    @Column("update_by")
    private String updateBy;

    /**
     * 是否删除 0 未删除 1已删除
     */
    @Column(value = "is_deleted",isLogicDelete = true)
    private Integer isDeleted;

    /**
     * 额外字段
     */
    @Column("extra_json")
    private String extraJson;

    /**
     * 当桶不存在，是否创建
     */
    @Column("create_bucket")
    private String createBucket;

    /**
     * 启动检测桶，是否存在
     */
    @Column("check_bucket")
    private String checkBucket;

}

