package cn.fateverse.query.entity.vo;

import cn.fateverse.common.core.annotaion.Excel;
import cn.fateverse.common.decrypt.annotation.EncryptField;
import cn.fateverse.query.entity.Portal;
import cn.fateverse.query.enums.PortalEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.ObjectUtils;

import java.util.Date;

/**
 * @author Clay
 * @date 2024/4/15 10:28
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("简单接口管理表")
public class SimplePortalVo {

    /**
     * 主键id
     */
    @ApiModelProperty("主键id")
    @EncryptField
    private String portalId;


    /**
     * 自定义查询id
     */
    @ApiModelProperty("自定义查询id")
    private Long queryId;


    /**
     * 数据适配器id
     */
    @ApiModelProperty("数据适配器id")
    private Long adapterId;

    /**
     * 接口名称
     */
    @ApiModelProperty("接口名称")
    @Excel("接口名称")
    private String portalName;

    /**
     * 自定查询名称
     */
    @ApiModelProperty("自定查询名称")
    @Excel("自定查询名称")
    private String queryName;

    @ApiModelProperty("自定查询类型  1:sql 2:topo图")
    private Integer queryType;

    /**
     * 数据适配器名称
     */
    @ApiModelProperty("数据适配器名称")
    @Excel("数据适配器名称")
    private String adapterName;


    /**
     * 是否匿名
     */
    @ApiModelProperty("是否匿名")
    @Excel("是否匿名")
    private Boolean anonymity;

    /**
     * 接口类型
     */
    @ApiModelProperty("接口类型")
    @Excel("接口类型")
    private PortalEnum type;

    /**
     * 系统暴露地址
     */
    @ApiModelProperty("系统暴露地址")
    @Excel("系统暴露地址")
    private String path;

    /**
     * 状态
     */
    @ApiModelProperty("状态 0: 创建 1: 发布 2:内部使用(例如提供echarts单独使用)")
    @Excel("状态")
    private Integer state;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @Excel("创建时间")
    private Date createTime;

    /**
     * 更新者
     */
    @ApiModelProperty("更新时间")
    @Excel("更新时间")
    private Date updateTime;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    @Excel("备注")
    private String remark;

    public static SimplePortalVo toPortalVo(Portal portal) {
        SimplePortalVo portalVo = SimplePortalVo.builder()
                .portalId(String.valueOf(portal.getPortalId()))
                .portalName(portal.getPortalName())
                .anonymity(portal.getAnonymity())
                .queryId(portal.getQueryId())
                .adapterId(portal.getAdapterId())
                .type(portal.getType())
                .path(portal.getPath())
                .state(portal.getState())
                .createTime(portal.getCreateTime())
                .updateTime(portal.getUpdateTime())
                .remark(portal.getRemark())
                .build();
        portalVo.setCreateTime(portal.getCreateTime());
        portalVo.setUpdateTime(portal.getUpdateTime());
        return portalVo;
    }

}
