package cn.fateverse.query.entity.vo;

import cn.fateverse.common.decrypt.annotation.EncryptField;
import cn.fateverse.query.entity.DataAdapter;
import cn.fateverse.common.core.annotaion.Excel;
import cn.fateverse.query.enums.DataAdapterSource;
import cn.fateverse.query.enums.DataAdapterType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;



/**
 * 数据源适配器对象 data_adapter
 *
 * @author clay
 * @date 2023-10-29
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("数据源适配器Vo")
public class DataAdapterVo {

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

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

    /**
     * 数据适配器代码类型 Java or Js
     */
    @ApiModelProperty("数据适配器代码类型 Java or Js")
    @Excel("数据适配器代码类型 Java or Js")
    private DataAdapterType type;

    /**
     * 适配器代码
     */
    @ApiModelProperty("适配器代码")
    @Excel("适配器代码")
    private String code;

    /**
     * 模拟数据 strng类型的json字符串
     */
    @ApiModelProperty("模拟数据 strng类型的json字符串")
    @Excel("模拟数据 strng类型的json字符串")
    private String mockData;

    public static DataAdapterVo toDataAdapterVo(DataAdapter dataAdapter) {
        return DataAdapterVo.builder()
                .adapterId(dataAdapter.getAdapterId())
                .adapterName(dataAdapter.getAdapterName())
                .type(dataAdapter.getType())
                .code(dataAdapter.getCode())
                .mockData(dataAdapter.getMockData())
                .build();
    }
}