package com.sf.service.gateway.domain.dto;

import com.sf.common.annotation.Excel;
import com.sf.service.gateway.domain.GatewayRoute;
import com.sf.service.gateway.enums.GatewayRouteType;
import com.sf.service.gateway.enums.RequestProtocol;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * 路由管理对象 Gateway_route
 * 
 * @author 邹坤
 * @date 2024-04-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class InsertOrUpdateGatewayRouteDTO {
    private static final long serialVersionUID = 1L;

    /** ID */
    private Long id;

    /** 路由名称 */
    @NotBlank(message = "路由名称不能为空")
    private String routeName;

    /** 请求协议，目前只支持HTTP */
    @NotNull(message = "请求协议不正确")
    private RequestProtocol requestProtocol;

    /** 路由类型（WEIGHT_ROUTE=权重路由，HEADER_ROUTE=请求头路由） */
    @NotNull(message = "路由类型不正确")
    private GatewayRouteType routeType;

    /** 路由配置信息，json格式*/
    @Excel(name = "路由配置信息，json格式")
    @NotNull(message = "路由配置信息不能为空")
    @Size(min = 1,message = "路由配置信息最少存在一条")
    @Valid
    private List<GatewayRoute.RouteContent> routeContent;

    /** 路由状态探活（0停用 1启用） */
    @Excel(name = "路由状态探活（0停用 1启用）")
    private String routeStatusActiveMonitoring;

    /** 路由探活路径 */
    @Excel(name = "路由探活路径")
    private String routeActiveMonitoringPath;

    /** 路由探活超时时间，单位ms */
    @Excel(name = "路由探活超时时间，单位ms")
    private Long routeActiveMonitoringTimeout;

}
