package com.usky.data.domain;

import java.time.LocalDateTime;
import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * <p>
 * 数据中心_数据接口表
 * </p>
 *
 * @author fyc
 * @since 2026-01-24
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class DataInterface implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 接口名称
     */
    @NotBlank(message = "接口名称不能为空")
    private String fullName;

    /**
     * 接口编码
     */
    @NotBlank(message = "接口编码不能为空")
    private String enCode;

    /**
     * 接口分类
     */
    private String category;

    /**
     * 接口类型（1:静态数据, 2:SQL操作, 3:API操作）
     */
    @NotNull(message = "接口类型不能为空")
    private Integer type;

    /**
     * 操作类型()
     */
    private Integer action;

    /**
     * 分页(0-禁用，1-启用)
     */
    private Integer hasPage;

    /**
     * 后置接口(0-否 1-是)
     */
    private Integer isPostposition;

    /**
     * 字段JSON
     */
    private String fieldJson;

    /**
     * 数据配置JSON
     */
    @TableField("config_json")
    @NotBlank(message = "数据配置JSON不能为空")
    private String dataConfigJson;

    /**
     * 数据统计json
     */
    @TableField("count_json")
    @NotBlank(message = "数据统计json不能为空")
    private String dataCountJson;

    /**
     * 数据回显json
     */
    @TableField("echo_json")
    @NotBlank(message = "数据回显json不能为空")
    private String dataEchoJson;

    /**
     * 数据处理json
     */
    @TableField("js_json")
    @NotBlank(message = "数据处理json不能为空")
    private String dataJsJson;

    /**
     * 参数配置JSON
     */
    private String parameterJson;

    /**
     * 异常验证JSON
     */
    private String exceptionJson;

    /**
     * 描述或说明
     */
    private String description;

    /**
     * 启用状态(0-禁用，1-启用)
     */
    private Integer enabledMark;

    /**
     * 排序
     */
    private Long sortCode;

    /**
     * 创建者
     */
    @NotBlank(message = "创建人不能为空")
    private String createBy;

    /**
     * 创建时间
     */
    @NotNull(message = "创建时间不能为空")
    private LocalDateTime createTime;

    /**
     * 更新者
     */
    @NotBlank(message = "更新人不能为空")
    private String updateBy;

    /**
     * 更新时间
     */
    @NotNull(message = "更新时间不能为空")
    private LocalDateTime updateTime;

    /**
     * 删除时间
     */
    @NotNull(message = "删除时间不能为空")
    private LocalDateTime deleteTime;

    /**
     * 删除用户
     */
    @NotBlank(message = "删除人不能为空")
    private String deleteBy;

    /**
     * 是否删除 0:未删除，1:已删除
     */
    private Integer isDelete;

    /**
     * 租户ID
     */
    private Integer tenantId;


}
