package com.qqchen.deploy.backend.deploy.dto;

import com.qqchen.deploy.backend.framework.dto.DiskInfo;
import com.qqchen.deploy.backend.framework.enums.AuthTypeEnum;
import com.qqchen.deploy.backend.framework.enums.OsTypeEnum;
import com.qqchen.deploy.backend.deploy.enums.ServerStatusEnum;
import com.qqchen.deploy.backend.framework.dto.BaseDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 服务器 DTO
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ServerDTO extends BaseDTO {

    /**
     * 服务器名称
     */
    private String serverName;

    /**
     * IP地址
     */
    private String hostIp;

    /**
     * SSH端口
     */
    private Integer sshPort;

    /**
     * SSH用户名
     */
    private String sshUser;

    /**
     * 认证方式
     */
    private AuthTypeEnum authType;

    /**
     * SSH密码（加密存储）
     */
    private String sshPassword;

    /**
     * SSH私钥（加密存储）
     */
    private String sshPrivateKey;

    /**
     * 私钥密码（加密存储）
     */
    private String sshPassphrase;

    /**
     * 服务器分类ID
     */
    private Long categoryId;

    /**
     * 操作系统类型
     */
    private OsTypeEnum osType;

    /**
     * 操作系统版本
     */
    private String osVersion;

    /**
     * 主机名
     */
    private String hostname;

    /**
     * 连接状态
     */
    private ServerStatusEnum status;

    /**
     * 服务器描述
     */
    private String description;

    /**
     * CPU核心数
     */
    private Integer cpuCores;

    /**
     * 内存大小(GB)
     */
    private Integer memorySize;

    /**
     * 磁盘总容量(GB)
     */
    private Integer diskSize;

    /**
     * 磁盘详细信息列表
     */
    private List<DiskInfo> diskInfo;

    /**
     * 标签（JSON格式）
     */
    private String tags;

    /**
     * 最后连接时间
     */
    private LocalDateTime lastConnectTime;
}

