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-06-02 21:59:56
 */
@Data
@Table("schisandra_oss_huawei")
public class SchisandraOssHuawei implements Serializable {

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

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

    /**
     * 
     */
    @Column("base_path")
    private String basePath;

    /**
     * 
     */
    @Column("access_key")
    private String accessKey;

    /**
     * 
     */
    @Column("secret_key")
    private String secretKey;

    /**
     * 
     */
    @Column("end_point")
    private String endPoint;

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

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

    /**
     * 如果空闲时间超过此参数的设定值，则关闭连接（单位：毫秒）。默认为30000毫秒。
     */
    @Column("idle_connection_time")
    private Integer idleConnectionTime;

    /**
     * 连接池中最大空闲连接数，默认值：1000。
     */
    @Column("max_idle_connections")
    private Integer maxIdleConnections;

    /**
     * 最大允许的HTTP并发请求数。默认为1000。
     */
    @Column("max_connections")
    private Integer maxConnections;

    /**
     * 请求失败（请求异常、服务端报500或503错误等）后最大的重试次数。默认3次。
     */
    @Column("max_error_retry")
    private Integer maxErrorRetry;

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

    /**
     * 设置HTTP请求的端口号 (默认为80)。
     */
    @Column("endpoint_http_port")
    private Integer endpointHttpPort;

    /**
     * 定是否使用HTTPS连接OBS (默认为 “true”)。
     */
    @Column("endpoint_https_port")
    private String endpointHttpsPort;

    /**
     * 定是否使用HTTPS连接OBS (默认为 “true”)。
     */
    @Column("https_only")
    private String httpsOnly;

    /**
     * 指定是否启用对OBS的路径样式访问。“true” 表示启用了路径样式的访问，而 “false” (默认) 表示启用了虚拟托管样式的访问。注意: 如果启用了路径样式访问，则不支持OBS 3.0的新bucket功能。
     */
    @Column("path_style")
    private String pathStyle;

    /**
     * HTTP代理配置。默认为空。
     */
    @Column("http_proxy")
    private String httpProxy;

    /**
     * 上传流对象时使用的缓存大小（单位：字节）。默认为512KB。
     */
    @Column("upload_stream_retry_buffer_size")
    private Integer uploadStreamRetryBufferSize;

    /**
     * 是否验证服务端证书。默认为false。
     */
    @Column("validate_certificate")
    private String validateCertificate;

    /**
     * 是否验证响应头信息的ContentType。默认为true。
     */
    @Column("verify_response_content_type")
    private String verifyResponseContentType;

    /**
     * 从Socket流下载对象的缓存大小（单位：字节），-1表示不设置缓存。默认为-1。
     */
    @Column("read_buffer_size")
    private Integer readBufferSize;

    /**
     * 上传对象到Socket流时的缓存大小（单位：字节），-1表示不设置缓存。默认为-1。
     */
    @Column("write_buffer_size")
    private Double writeBufferSize;

    /**
     * 是否严格验证服务端主机名。默认为false。
     */
    @Column("is_strict_hostname_verification")
    private String isStrictHostnameVerification;

    /**
     * 设置身份验证类型。
     */
    @Column("auth_type")
    private String authType;

    /**
     * Socket发送缓冲区大小（单位：字节），对应java.net.SocketOptions.SO_SNDBUF参数。默认为-1表示不设置。
     */
    @Column("socket_write_buffer_size")
    private Integer socketWriteBufferSize;

    /**
     * Socket接收缓冲区大小（单位：字节），对应java.net.SocketOptions.SO_RCVBUF参数。默认为-1表示不设置。
     */
    @Column("socket_read_buffer_size")
    private Integer socketReadBufferSize;

    /**
     * 是否使用长连接访问OBS服务。默认为true。
     */
    @Column("keep_alive")
    private String keepAlive;

    /**
     * 指定是否使用协议协商。
     */
    @Column("auth_type_negotiation")
    private String authTypeNegotiation;

    /**
     * 是否通过自定义域名访问OBS服务。默认为false。
     */
    @Column("cname")
    private String cname;

    /**
     * 将文件夹隔离器设置为斜线。
     */
    @Column("delimiter")
    private String delimiter;

    /**
     * SSLContext的Provider，默认使用JDK提供的SSLContext。
     */
    @Column("ssl_provider")
    private String sslProvider;

    /**
     * 访问OBS服务端时使用的HTTP协议类型。默认为HTTP1.1协议。
     */
    @Column("http_protocol_type")
    private String httpProtocolType;

    /**
     * 是否开启Okhttp中的连接失败重试，默认关闭
     */
    @Column("retry_on_connection_failureIn_okhttp")
    private String retryOnConnectionFailureInOkhttp;

    /**
     * 发生异常时最大重试次数
     */
    @Column("max_retry_on_unexpected_end_exception")
    private String maxRetryOnUnexpectedEndException;

    /**
     * 分片大小,默认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("is_deleted")
    private Integer isDeleted;

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

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

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

}

