/*
 * This file is generated by jOOQ.
 */
package cn.vertxup.tpl.domain.tables.interfaces;


import io.github.jklingsporn.vertx.jooq.shared.internal.VertxPojo;

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

import static io.github.jklingsporn.vertx.jooq.shared.internal.VertxPojo.setOrThrow;
/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public interface ITplTicket extends VertxPojo, Serializable {

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.KEY</code>. 「key」- 增量记录ID
     */
    public ITplTicket setKey(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.KEY</code>. 「key」- 增量记录ID
     */
    public String getKey();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.CODE</code>. 「code」- 编码
     */
    public ITplTicket setCode(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.CODE</code>. 「code」- 编码
     */
    public String getCode();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.NAME</code>. 「name」- 名称
     */
    public ITplTicket setName(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.NAME</code>. 「name」- 名称
     */
    public String getName();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.DESCRIPTION</code>. 「description」-
     * 描述
     */
    public ITplTicket setDescription(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.DESCRIPTION</code>. 「description」-
     * 描述
     */
    public String getDescription();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.TYPE</code>. 「type」- 分类
     */
    public ITplTicket setType(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.TYPE</code>. 「type」- 分类
     */
    public String getType();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.STATUS</code>. 「status」- 状态
     */
    public ITplTicket setStatus(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.STATUS</code>. 「status」- 状态
     */
    public String getStatus();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.SYSTEM</code>. 「system」- 是否属于系统模板
     */
    public ITplTicket setSystem(Boolean value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.SYSTEM</code>. 「system」- 是否属于系统模板
     */
    public Boolean getSystem();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.MODEL_ID</code>. 「modelId」-
     * 关联的模型identifier，用于描述
     */
    public ITplTicket setModelId(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.MODEL_ID</code>. 「modelId」-
     * 关联的模型identifier，用于描述
     */
    public String getModelId();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.MODEL_KEY</code>. 「modelKey」-
     * 关联的模型记录ID，用于描述哪一个Model中的记录
     */
    public ITplTicket setModelKey(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.MODEL_KEY</code>. 「modelKey」-
     * 关联的模型记录ID，用于描述哪一个Model中的记录
     */
    public String getModelKey();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.MODEL_CATEGORY</code>.
     * 「modelCategory」- 模型分类
     */
    public ITplTicket setModelCategory(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.MODEL_CATEGORY</code>.
     * 「modelCategory」- 模型分类
     */
    public String getModelCategory();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.RECORD_JSON</code>. 「recordJson」-
     * 上一次的记录内容（Json格式）
     */
    public ITplTicket setRecordJson(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.RECORD_JSON</code>. 「recordJson」-
     * 上一次的记录内容（Json格式）
     */
    public String getRecordJson();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.RECORD_COMPONENT</code>.
     * 「recordComponent」- 处理记录的组件
     */
    public ITplTicket setRecordComponent(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.RECORD_COMPONENT</code>.
     * 「recordComponent」- 处理记录的组件
     */
    public String getRecordComponent();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.UI_CONFIG</code>. 「uiConfig」-
     * UI的配置（Json格式）
     */
    public ITplTicket setUiConfig(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.UI_CONFIG</code>. 「uiConfig」-
     * UI的配置（Json格式）
     */
    public String getUiConfig();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.UI_COMPONENT</code>.
     * 「uiComponent」- 处理UI的组件
     */
    public ITplTicket setUiComponent(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.UI_COMPONENT</code>.
     * 「uiComponent」- 处理UI的组件
     */
    public String getUiComponent();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.SIGMA</code>. 「sigma」- 统一标识
     */
    public ITplTicket setSigma(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.SIGMA</code>. 「sigma」- 统一标识
     */
    public String getSigma();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.LANGUAGE</code>. 「language」- 使用的语言
     */
    public ITplTicket setLanguage(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.LANGUAGE</code>. 「language」- 使用的语言
     */
    public String getLanguage();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.ACTIVE</code>. 「active」- 是否启用
     */
    public ITplTicket setActive(Boolean value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.ACTIVE</code>. 「active」- 是否启用
     */
    public Boolean getActive();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.METADATA</code>. 「metadata」-
     * 附加配置数据
     */
    public ITplTicket setMetadata(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.METADATA</code>. 「metadata」-
     * 附加配置数据
     */
    public String getMetadata();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.CREATED_AT</code>. 「createdAt」-
     * 创建时间
     */
    public ITplTicket setCreatedAt(LocalDateTime value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.CREATED_AT</code>. 「createdAt」-
     * 创建时间
     */
    public LocalDateTime getCreatedAt();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.CREATED_BY</code>. 「createdBy」-
     * 创建人
     */
    public ITplTicket setCreatedBy(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.CREATED_BY</code>. 「createdBy」-
     * 创建人
     */
    public String getCreatedBy();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.UPDATED_AT</code>. 「updatedAt」-
     * 更新时间
     */
    public ITplTicket setUpdatedAt(LocalDateTime value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.UPDATED_AT</code>. 「updatedAt」-
     * 更新时间
     */
    public LocalDateTime getUpdatedAt();

    /**
     * Setter for <code>DB_ETERNAL.TPL_TICKET.UPDATED_BY</code>. 「updatedBy」-
     * 更新人
     */
    public ITplTicket setUpdatedBy(String value);

    /**
     * Getter for <code>DB_ETERNAL.TPL_TICKET.UPDATED_BY</code>. 「updatedBy」-
     * 更新人
     */
    public String getUpdatedBy();

    // -------------------------------------------------------------------------
    // FROM and INTO
    // -------------------------------------------------------------------------

    /**
     * Load data from another generated Record/POJO implementing the common
     * interface ITplTicket
     */
    public void from(ITplTicket from);

    /**
     * Copy data into another generated Record/POJO implementing the common
     * interface ITplTicket
     */
    public <E extends ITplTicket> E into(E into);

        @Override
        public default ITplTicket fromJson(io.vertx.core.json.JsonObject json) {
                setOrThrow(this::setKey,json::getString,"KEY","java.lang.String");
                setOrThrow(this::setCode,json::getString,"CODE","java.lang.String");
                setOrThrow(this::setName,json::getString,"NAME","java.lang.String");
                setOrThrow(this::setDescription,json::getString,"DESCRIPTION","java.lang.String");
                setOrThrow(this::setType,json::getString,"TYPE","java.lang.String");
                setOrThrow(this::setStatus,json::getString,"STATUS","java.lang.String");
                setOrThrow(this::setSystem,json::getBoolean,"SYSTEM","java.lang.Boolean");
                setOrThrow(this::setModelId,json::getString,"MODEL_ID","java.lang.String");
                setOrThrow(this::setModelKey,json::getString,"MODEL_KEY","java.lang.String");
                setOrThrow(this::setModelCategory,json::getString,"MODEL_CATEGORY","java.lang.String");
                setOrThrow(this::setRecordJson,json::getString,"RECORD_JSON","java.lang.String");
                setOrThrow(this::setRecordComponent,json::getString,"RECORD_COMPONENT","java.lang.String");
                setOrThrow(this::setUiConfig,json::getString,"UI_CONFIG","java.lang.String");
                setOrThrow(this::setUiComponent,json::getString,"UI_COMPONENT","java.lang.String");
                setOrThrow(this::setSigma,json::getString,"SIGMA","java.lang.String");
                setOrThrow(this::setLanguage,json::getString,"LANGUAGE","java.lang.String");
                setOrThrow(this::setActive,json::getBoolean,"ACTIVE","java.lang.Boolean");
                setOrThrow(this::setMetadata,json::getString,"METADATA","java.lang.String");
                setOrThrow(this::setCreatedAt,key -> {String s = json.getString(key); return s==null?null:java.time.LocalDateTime.parse(s);},"CREATED_AT","java.time.LocalDateTime");
                setOrThrow(this::setCreatedBy,json::getString,"CREATED_BY","java.lang.String");
                setOrThrow(this::setUpdatedAt,key -> {String s = json.getString(key); return s==null?null:java.time.LocalDateTime.parse(s);},"UPDATED_AT","java.time.LocalDateTime");
                setOrThrow(this::setUpdatedBy,json::getString,"UPDATED_BY","java.lang.String");
                return this;
        }


        @Override
        public default io.vertx.core.json.JsonObject toJson() {
                io.vertx.core.json.JsonObject json = new io.vertx.core.json.JsonObject();
                json.put("KEY",getKey());
                json.put("CODE",getCode());
                json.put("NAME",getName());
                json.put("DESCRIPTION",getDescription());
                json.put("TYPE",getType());
                json.put("STATUS",getStatus());
                json.put("SYSTEM",getSystem());
                json.put("MODEL_ID",getModelId());
                json.put("MODEL_KEY",getModelKey());
                json.put("MODEL_CATEGORY",getModelCategory());
                json.put("RECORD_JSON",getRecordJson());
                json.put("RECORD_COMPONENT",getRecordComponent());
                json.put("UI_CONFIG",getUiConfig());
                json.put("UI_COMPONENT",getUiComponent());
                json.put("SIGMA",getSigma());
                json.put("LANGUAGE",getLanguage());
                json.put("ACTIVE",getActive());
                json.put("METADATA",getMetadata());
                json.put("CREATED_AT",getCreatedAt()==null?null:getCreatedAt().toString());
                json.put("CREATED_BY",getCreatedBy());
                json.put("UPDATED_AT",getUpdatedAt()==null?null:getUpdatedAt().toString());
                json.put("UPDATED_BY",getUpdatedBy());
                return json;
        }

}
