/*
 * This file is generated by jOOQ.
 */
package cn.vertxup.rbac.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 ISView extends VertxPojo, Serializable {

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.KEY</code>. 「key」- 限定记录ID
     */
    public ISView setKey(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.KEY</code>. 「key」- 限定记录ID
     */
    public String getKey();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.NAME</code>. 「name」- 视图名称，每个 MATRIX
     * 对应一个视图
     */
    public ISView setName(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.NAME</code>. 「name」- 视图名称，每个 MATRIX
     * 对应一个视图
     */
    public String getName();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.TITLE</code>. 「title」- 视图标题，用户输入，可选择
     */
    public ISView setTitle(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.TITLE</code>. 「title」- 视图标题，用户输入，可选择
     */
    public String getTitle();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.OWNER</code>. 「owner」- 用户 / 角色ID
     */
    public ISView setOwner(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.OWNER</code>. 「owner」- 用户 / 角色ID
     */
    public String getOwner();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.OWNER_TYPE</code>. 「ownerType」- ROLE
     * 角色，USER 用户
     */
    public ISView setOwnerType(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.OWNER_TYPE</code>. 「ownerType」- ROLE
     * 角色，USER 用户
     */
    public String getOwnerType();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.RESOURCE_ID</code>. 「resourceId」-
     * 关联资源ID
     */
    public ISView setResourceId(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.RESOURCE_ID</code>. 「resourceId」-
     * 关联资源ID
     */
    public String getResourceId();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.PROJECTION</code>. 「projection」-
     * 该资源的列定义（单用户处理）
     */
    public ISView setProjection(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.PROJECTION</code>. 「projection」-
     * 该资源的列定义（单用户处理）
     */
    public String getProjection();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.CRITERIA</code>. 「criteria」-
     * 该资源的行查询（单用户处理）
     */
    public ISView setCriteria(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.CRITERIA</code>. 「criteria」-
     * 该资源的行查询（单用户处理）
     */
    public String getCriteria();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.ROWS</code>. 「rows」- 该资源针对保存的行进行过滤
     */
    public ISView setRows(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.ROWS</code>. 「rows」- 该资源针对保存的行进行过滤
     */
    public String getRows();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.POSITION</code>. 「position」-
     * 当前视图的模块位置，比页面低一个维度
     */
    public ISView setPosition(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.POSITION</code>. 「position」-
     * 当前视图的模块位置，比页面低一个维度
     */
    public String getPosition();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.VISITANT</code>. 「visitant」-
     * 是否包含了视图访问者
     */
    public ISView setVisitant(Boolean value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.VISITANT</code>. 「visitant」-
     * 是否包含了视图访问者
     */
    public Boolean getVisitant();

    /**
     * Setter for <code>DB_ETERNAL.S_VIEW.SIGMA</code>. 「sigma」- 用户组绑定的统一标识
     */
    public ISView setSigma(String value);

    /**
     * Getter for <code>DB_ETERNAL.S_VIEW.SIGMA</code>. 「sigma」- 用户组绑定的统一标识
     */
    public String getSigma();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public default ISView fromJson(io.vertx.core.json.JsonObject json) {
                setOrThrow(this::setKey,json::getString,"KEY","java.lang.String");
                setOrThrow(this::setName,json::getString,"NAME","java.lang.String");
                setOrThrow(this::setTitle,json::getString,"TITLE","java.lang.String");
                setOrThrow(this::setOwner,json::getString,"OWNER","java.lang.String");
                setOrThrow(this::setOwnerType,json::getString,"OWNER_TYPE","java.lang.String");
                setOrThrow(this::setResourceId,json::getString,"RESOURCE_ID","java.lang.String");
                setOrThrow(this::setProjection,json::getString,"PROJECTION","java.lang.String");
                setOrThrow(this::setCriteria,json::getString,"CRITERIA","java.lang.String");
                setOrThrow(this::setRows,json::getString,"ROWS","java.lang.String");
                setOrThrow(this::setPosition,json::getString,"POSITION","java.lang.String");
                setOrThrow(this::setVisitant,json::getBoolean,"VISITANT","java.lang.Boolean");
                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("NAME",getName());
                json.put("TITLE",getTitle());
                json.put("OWNER",getOwner());
                json.put("OWNER_TYPE",getOwnerType());
                json.put("RESOURCE_ID",getResourceId());
                json.put("PROJECTION",getProjection());
                json.put("CRITERIA",getCriteria());
                json.put("ROWS",getRows());
                json.put("POSITION",getPosition());
                json.put("VISITANT",getVisitant());
                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;
        }

}
