package org.springblade.flow.datalog.model;

import java.io.Serializable;
import java.util.Date;

import org.springblade.flow.datalog.enums.FormDataLogType;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;

import lombok.Data;

/**
 * 表单数据变更日志
 * 
 * @author William
 * @date 2022年11月17日 上午10:07:28
 */
@Data
@TableName("base_visualdev_data_log")
public class FormDataLog implements Serializable {

	private static final long serialVersionUID = 1L;

	private Long id; // 主键ID
	private String formId; // 表单ID
	private Integer columnId; // 字段ID 在数据集中的
	private String valueOld; // 旧的数据
	private String valueNew; // 新的数据
	private String action;// 操作：add-新增；delete-删除；update-修改；
	private Date time; // 操作时间
	private Long sn; // 序列号，同一次的操作序列号相同
	private String operator;
	private Long operatorId;

	public FormDataLog() {
		this(null);
	}

	public FormDataLog(FormDataLogType type) {
		this(type, null);
	}

	public FormDataLog(FormDataLogType type, Integer columnId) {
		this(type, null, null);
	}

	public FormDataLog(FormDataLogType type, Integer columnId, String formId) {
		if (type == null) {
			throw new RuntimeException("表单数据操作类型不可为空");
		}

		this.id = IdWorker.getId();
		this.action = type.getAction();
		this.columnId = columnId;
		this.formId = formId;
		this.time = new Date();
	}

}
