package org.springblade.etl.entity;

import java.time.LocalDateTime;

import org.springblade.core.mp.base.TenantEntity;
import org.springblade.datasource.enums.ViewColumnTypeEnum;
import org.springblade.etl.enums.DataSyncType;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 数据同步任务表 dsy_job_table
 * 
 * @author aokunsang
 * @date 2023-09-21
 */
@Data
@TableName("dsy_job_table")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "DsyJobTable对象", description = "数据同步任务")
public class DsyJobTable extends TenantEntity{

	private static final long serialVersionUID = 1L;
	
 	/** 
	 *  
	 */
	@TableId(type = IdType.AUTO)
	private Integer id;
	
	/** 
	 * 任务ID 
	 */
	@ApiModelProperty(value = "任务ID")
	private Integer jobId;

	/** 
	 * 输入源表名 
	 */
	@ApiModelProperty(value = "输入源表名")
	private String sourceTableName;

	/** 
	 * 输入源表注释 
	 */
	@ApiModelProperty(value = "输入源表注释")
	private String sourceTableComment;

	/** 
	 * 目标源表名 
	 */
	@ApiModelProperty(value = "目标源表名")
	private String targetTableName;
	
	/** 
	 * 目标源表注释
	 */
	@ApiModelProperty(value = "目标源表注释")
	private String targetTableComment;

	/** 
	 * 数据源表的增量字段名 
	 */
	@ApiModelProperty(value = "数据源表的增量字段名")
	private String incrementColumnName;
	
	/** 
	 * 数据源表的增量字段名数据类型
	 */
	@ApiModelProperty(value = "数据源表的增量字段名数据类型")
	private ViewColumnTypeEnum incrementColumnType;

	/** 
	 * 是否自动建表 
	 */
	@ApiModelProperty(value = "是否自动建表")
	private Integer createTableStatus;

	/** 
	 * 同步方式 
	 */
	@ApiModelProperty(value = "同步方式")
	private DataSyncType syncType;

	/** 
	 * 是否清空数据 
	 */
	@ApiModelProperty(value = "是否清空数据")
	private Integer truncateTableStatus;

	/** 
	 * 是否同步索引 
	 */
	@ApiModelProperty(value = "是否同步索引")
	private Integer syncIndexStatus;

	/** 
	 * 查询SQL语句 
	 */
	@ApiModelProperty(value = "查询SQL语句")
	@JsonIgnore
	private String querySql;

	/** 
	 * 同步任务前执行语句(一般truncate) 
	 */
	@ApiModelProperty(value = "同步任务前执行语句")
	@JsonIgnore
	private String preSql;

	/** 
	 * 输入源字段json 
	 */
	@ApiModelProperty(value = "输入源字段json")
	private String sourceColumnJson;

	/** 
	 * 目标源字段json 
	 */
	@ApiModelProperty(value = "目标源字段json")
	private String targetColumnJson;

	/** 
	 * 是否大写 
	 */
	@ApiModelProperty(value = "是否大写")
	private Integer targetColumnUpperStatus;

	/** 
	 * 其他数据json 
	 */
	@ApiModelProperty(value = "其他数据json[前端使用]")
	private String extJson;
	
	/** 
	 * 创建时间 
	 */
	@ApiModelProperty(value = "创建时间")
	private LocalDateTime createTime;
	
	/**
	 * 开始和结束的增量数值
	 */
	@JsonIgnore
	private String startIncrementData;
	@JsonIgnore
	private String endIncrementData;
}
