package tech.easyflow.datacenter.entity.base;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.core.handler.FastjsonTypeHandler;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import java.util.Map;
import tech.easyflow.common.entity.DateEntity;


public class DatacenterTableBase extends DateEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @Id(keyType = KeyType.Generator, value = "snowFlakeId", comment = "主键")
    private BigInteger id;

    /**
     * 部门ID
     */
    @Column(comment = "部门ID")
    private BigInteger deptId;

    /**
     * 租户ID
     */
    @Column(tenantId = true, comment = "租户ID")
    private BigInteger tenantId;

    /**
     * 数据源ID
     */
    @Column(comment = "数据源ID")
    private BigInteger sourceId;

    /**
     * 目录ID
     */
    @Column(comment = "目录ID")
    private BigInteger catalogId;

    /**
     * 数据表名
     */
    @Column(comment = "数据表名")
    private String tableName;

    /**
     * 数据表描述
     */
    @Column(comment = "数据表描述")
    private String tableDesc;

    /**
     * 物理表名
     */
    @Column(comment = "物理表名")
    private String actualTable;

    /**
     * 表类型
     */
    @Column(comment = "表类型")
    private String tableKind;

    /**
     * 访问模式
     */
    @Column(comment = "访问模式")
    private String accessMode;

    /**
     * 物化表名
     */
    @Column(comment = "物化表名")
    private String materializedTable;

    /**
     * 是否开启版本
     */
    @Column(comment = "是否开启版本")
    private Integer versioningEnabled;

    /**
     * 数据状态
     */
    @Column(comment = "数据状态")
    private Integer status;

    /**
     * 创建时间
     */
    @Column(comment = "创建时间")
    private Date created;

    /**
     * 创建者
     */
    @Column(comment = "创建者")
    private BigInteger createdBy;

    /**
     * 修改时间
     */
    @Column(comment = "修改时间")
    private Date modified;

    /**
     * 修改者
     */
    @Column(comment = "修改者")
    private BigInteger modifiedBy;

    /**
     * 扩展项
     */
    @Column(typeHandler = FastjsonTypeHandler.class, comment = "扩展项")
    private Map<String, Object> options;

    /**
     * 能力声明
     */
    @Column(typeHandler = FastjsonTypeHandler.class, comment = "能力声明")
    private Map<String, Object> capabilitiesJson;

    public BigInteger getId() {
        return id;
    }

    public void setId(BigInteger id) {
        this.id = id;
    }

    public BigInteger getDeptId() {
        return deptId;
    }

    public void setDeptId(BigInteger deptId) {
        this.deptId = deptId;
    }

    public BigInteger getTenantId() {
        return tenantId;
    }

    public void setTenantId(BigInteger tenantId) {
        this.tenantId = tenantId;
    }

    public BigInteger getSourceId() {
        return sourceId;
    }

    public void setSourceId(BigInteger sourceId) {
        this.sourceId = sourceId;
    }

    public BigInteger getCatalogId() {
        return catalogId;
    }

    public void setCatalogId(BigInteger catalogId) {
        this.catalogId = catalogId;
    }

    public String getTableName() {
        return tableName;
    }

    public void setTableName(String tableName) {
        this.tableName = tableName;
    }

    public String getTableDesc() {
        return tableDesc;
    }

    public void setTableDesc(String tableDesc) {
        this.tableDesc = tableDesc;
    }

    public String getActualTable() {
        return actualTable;
    }

    public void setActualTable(String actualTable) {
        this.actualTable = actualTable;
    }

    public String getTableKind() {
        return tableKind;
    }

    public void setTableKind(String tableKind) {
        this.tableKind = tableKind;
    }

    public String getAccessMode() {
        return accessMode;
    }

    public void setAccessMode(String accessMode) {
        this.accessMode = accessMode;
    }

    public String getMaterializedTable() {
        return materializedTable;
    }

    public void setMaterializedTable(String materializedTable) {
        this.materializedTable = materializedTable;
    }

    public Integer getVersioningEnabled() {
        return versioningEnabled;
    }

    public void setVersioningEnabled(Integer versioningEnabled) {
        this.versioningEnabled = versioningEnabled;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Date getCreated() {
        return created;
    }

    public void setCreated(Date created) {
        this.created = created;
    }

    public BigInteger getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(BigInteger createdBy) {
        this.createdBy = createdBy;
    }

    public Date getModified() {
        return modified;
    }

    public void setModified(Date modified) {
        this.modified = modified;
    }

    public BigInteger getModifiedBy() {
        return modifiedBy;
    }

    public void setModifiedBy(BigInteger modifiedBy) {
        this.modifiedBy = modifiedBy;
    }

    public Map<String, Object> getOptions() {
        return options;
    }

    public void setOptions(Map<String, Object> options) {
        this.options = options;
    }

    public Map<String, Object> getCapabilitiesJson() {
        return capabilitiesJson;
    }

    public void setCapabilitiesJson(Map<String, Object> capabilitiesJson) {
        this.capabilitiesJson = capabilitiesJson;
    }

}
