/*
 * This file is generated by jOOQ.
 */
package cn.vertxup.ui.domain.tables.daos;


import cn.vertxup.ui.domain.tables.UiField;
import cn.vertxup.ui.domain.tables.records.UiFieldRecord;
import io.github.jklingsporn.vertx.jooq.classic.jdbc.JDBCClassicQueryExecutor;
import io.github.jklingsporn.vertx.jooq.shared.internal.AbstractVertxDAO;
import io.vertx.core.Future;
import org.jooq.Configuration;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UiFieldDao extends AbstractVertxDAO<UiFieldRecord, cn.vertxup.ui.domain.tables.pojos.UiField, String, Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>>, Future<cn.vertxup.ui.domain.tables.pojos.UiField>, Future<Integer>, Future<String>> implements io.github.jklingsporn.vertx.jooq.classic.VertxDAO<UiFieldRecord,cn.vertxup.ui.domain.tables.pojos.UiField,String> {

        /**
     * @param configuration The Configuration used for rendering and query
     * execution.
     * @param vertx the vertx instance
     */
        public UiFieldDao(Configuration configuration, io.vertx.core.Vertx vertx) {
                super(UiField.UI_FIELD, cn.vertxup.ui.domain.tables.pojos.UiField.class, new JDBCClassicQueryExecutor<UiFieldRecord,cn.vertxup.ui.domain.tables.pojos.UiField,String>(configuration,cn.vertxup.ui.domain.tables.pojos.UiField.class,vertx));
        }

        @Override
        protected String getId(cn.vertxup.ui.domain.tables.pojos.UiField object) {
                return object.getKey();
        }

        /**
     * Find records that have <code>X_POINT IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByXPoint(Collection<Integer> values) {
                return findManyByCondition(UiField.UI_FIELD.X_POINT.in(values));
        }

        /**
     * Find records that have <code>X_POINT IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByXPoint(Collection<Integer> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.X_POINT.in(values),limit);
        }

        /**
     * Find records that have <code>Y_POINT IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByYPoint(Collection<Integer> values) {
                return findManyByCondition(UiField.UI_FIELD.Y_POINT.in(values));
        }

        /**
     * Find records that have <code>Y_POINT IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByYPoint(Collection<Integer> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.Y_POINT.in(values),limit);
        }

        /**
     * Find records that have <code>LABEL IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByLabel(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.LABEL.in(values));
        }

        /**
     * Find records that have <code>LABEL IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByLabel(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.LABEL.in(values),limit);
        }

        /**
     * Find records that have <code>NAME IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByName(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.NAME.in(values));
        }

        /**
     * Find records that have <code>NAME IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByName(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.NAME.in(values),limit);
        }

        /**
     * Find records that have <code>SPAN IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyBySpan(Collection<Integer> values) {
                return findManyByCondition(UiField.UI_FIELD.SPAN.in(values));
        }

        /**
     * Find records that have <code>SPAN IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyBySpan(Collection<Integer> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.SPAN.in(values),limit);
        }

        /**
     * Find records that have <code>HIDDEN IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByHidden(Collection<Boolean> values) {
                return findManyByCondition(UiField.UI_FIELD.HIDDEN.in(values));
        }

        /**
     * Find records that have <code>HIDDEN IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByHidden(Collection<Boolean> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.HIDDEN.in(values),limit);
        }

        /**
     * Find records that have <code>RENDER IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByRender(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.RENDER.in(values));
        }

        /**
     * Find records that have <code>RENDER IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByRender(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.RENDER.in(values),limit);
        }

        /**
     * Find records that have <code>CONTAINER IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByContainer(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.CONTAINER.in(values));
        }

        /**
     * Find records that have <code>CONTAINER IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByContainer(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.CONTAINER.in(values),limit);
        }

        /**
     * Find records that have <code>OPTION_JSX IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByOptionJsx(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.OPTION_JSX.in(values));
        }

        /**
     * Find records that have <code>OPTION_JSX IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByOptionJsx(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.OPTION_JSX.in(values),limit);
        }

        /**
     * Find records that have <code>OPTION_CONFIG IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByOptionConfig(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.OPTION_CONFIG.in(values));
        }

        /**
     * Find records that have <code>OPTION_CONFIG IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByOptionConfig(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.OPTION_CONFIG.in(values),limit);
        }

        /**
     * Find records that have <code>OPTION_ITEM IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByOptionItem(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.OPTION_ITEM.in(values));
        }

        /**
     * Find records that have <code>OPTION_ITEM IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByOptionItem(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.OPTION_ITEM.in(values),limit);
        }

        /**
     * Find records that have <code>RULES IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByRules(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.RULES.in(values));
        }

        /**
     * Find records that have <code>RULES IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByRules(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.RULES.in(values),limit);
        }

        /**
     * Find records that have <code>CONTROL_ID IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByControlId(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.CONTROL_ID.in(values));
        }

        /**
     * Find records that have <code>CONTROL_ID IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByControlId(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.CONTROL_ID.in(values),limit);
        }

        /**
     * Find records that have <code>ROW_TYPE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByRowType(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.ROW_TYPE.in(values));
        }

        /**
     * Find records that have <code>ROW_TYPE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByRowType(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.ROW_TYPE.in(values),limit);
        }

        /**
     * Find records that have <code>ACTIVE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByActive(Collection<Boolean> values) {
                return findManyByCondition(UiField.UI_FIELD.ACTIVE.in(values));
        }

        /**
     * Find records that have <code>ACTIVE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByActive(Collection<Boolean> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.ACTIVE.in(values),limit);
        }

        /**
     * Find records that have <code>SIGMA IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyBySigma(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.SIGMA.in(values));
        }

        /**
     * Find records that have <code>SIGMA IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyBySigma(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.SIGMA.in(values),limit);
        }

        /**
     * Find records that have <code>METADATA IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByMetadata(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.METADATA.in(values));
        }

        /**
     * Find records that have <code>METADATA IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByMetadata(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.METADATA.in(values),limit);
        }

        /**
     * Find records that have <code>LANGUAGE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByLanguage(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.LANGUAGE.in(values));
        }

        /**
     * Find records that have <code>LANGUAGE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByLanguage(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.LANGUAGE.in(values),limit);
        }

        /**
     * Find records that have <code>CREATED_AT IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByCreatedAt(Collection<LocalDateTime> values) {
                return findManyByCondition(UiField.UI_FIELD.CREATED_AT.in(values));
        }

        /**
     * Find records that have <code>CREATED_AT IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByCreatedAt(Collection<LocalDateTime> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.CREATED_AT.in(values),limit);
        }

        /**
     * Find records that have <code>CREATED_BY IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByCreatedBy(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.CREATED_BY.in(values));
        }

        /**
     * Find records that have <code>CREATED_BY IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByCreatedBy(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.CREATED_BY.in(values),limit);
        }

        /**
     * Find records that have <code>UPDATED_AT IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByUpdatedAt(Collection<LocalDateTime> values) {
                return findManyByCondition(UiField.UI_FIELD.UPDATED_AT.in(values));
        }

        /**
     * Find records that have <code>UPDATED_AT IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByUpdatedAt(Collection<LocalDateTime> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.UPDATED_AT.in(values),limit);
        }

        /**
     * Find records that have <code>UPDATED_BY IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByUpdatedBy(Collection<String> values) {
                return findManyByCondition(UiField.UI_FIELD.UPDATED_BY.in(values));
        }

        /**
     * Find records that have <code>UPDATED_BY IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ui.domain.tables.pojos.UiField>> findManyByUpdatedBy(Collection<String> values, int limit) {
                return findManyByCondition(UiField.UI_FIELD.UPDATED_BY.in(values),limit);
        }

        @Override
        public JDBCClassicQueryExecutor<UiFieldRecord,cn.vertxup.ui.domain.tables.pojos.UiField,String> queryExecutor(){
                return (JDBCClassicQueryExecutor<UiFieldRecord,cn.vertxup.ui.domain.tables.pojos.UiField,String>) super.queryExecutor();
        }
}
