package com.test.test.domain;

import com.test.common.annotation.Excel;
import com.test.common.core.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

/**
 * 用例步骤对象 test_case_step
 *
 * @author liangdl
 * @date 2025-02-11
 */
@Setter
@Getter
@ToString
public class TestCaseStep extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 步骤id */
    private Long id;

    /** 父节点id */
    @Excel(name = "父节点id")
    private Long parentId;

    /** 用例id */
    @Excel(name = "用例id")
    private Long caseId;

    /** 步骤名 */
    @Excel(name = "步骤名")
    private String name;

    /** 执行顺序 */
    @Excel(name = "执行顺序")
    private Long stepNum;

    /** 步骤类型（http接口：1，数据源：2，循环：3，轮询：4） */
    @Excel(name = "步骤类型", readConverterExp = "h=ttp接口：1，数据源：2，循环：3，轮询：4")
    private Long type;

    /** http 请求方法(get or post) */
    @Excel(name = "http 请求方法(get or post)")
    private String requestMethod;

    /** http 请求路径 */
    @Excel(name = "http 请求路径")
    private String requestUrl;

    /** http 请求体 */
    @Excel(name = "http 请求体")
    private String requestBody;

    /** http 请求头 */
    @Excel(name = "http 请求头")
    private String requestHeader;

    /** http 查询参数 */
    @Excel(name = "http 查询参数")
    private String requestParams;

    /** http 关联服务id */
    @Excel(name = "http 关联服务id")
    private Long apiHttpId;

    /** http 请求主机 */
    @Excel(name = "http 请求主机")
    private String apiHost;

    /** http 请求端口号 */
    @Excel(name = "http 请求端口号")
    private Integer apiPort;

    /** http 请求协议(http, https) */
    @Excel(name = "http 请求协议(http, https)")
    private String apiProtocol;

    /** 数据源id */
    @Excel(name = "数据源id")
    private Long datasourceId;

    /** sql 命令 */
    @Excel(name = "sql 命令")
    private String sqlCommand;

    /** 循环次数 */
    @Excel(name = "循环次数")
    private Long count;

    /** 循环并行开关 */
    @Excel(name = "循环并行开关")
    private Integer async;

    /** 轮询间隔 */
    @Excel(name = "轮询间隔")
    private Long interval;

    /** 轮询失败判定条件选择 */
    @Excel(name = "轮询失败判定条件选择")
    private String breakError;

    /** 请求预处理 */
    @Excel(name = "请求预处理")
    private String preScript;

    /** 响应预处理 */
    @Excel(name = "响应预处理")
    private String postScript;

    /** 参数提取
     [{
     "name": "变量名",
     "type": "提取方式",
     "content": "提取对象",
     "path": "提取表达式",
     }] */
    @Excel(name = "参数提取")
    private String assignment;

    /** 校验规则
     [{
     "name": "描述",
     "source": "对象",
     "fn": "条件",
     "target": "内容"
     }] */
    @Excel(name = "校验规则")
    private String assertion;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 循环或轮询的子步骤列表 */
    private List<TestCaseStep> childrenList;
}
