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


import cn.vertxup.ambient.domain.tables.XActivityRule;
import cn.vertxup.ambient.domain.tables.records.XActivityRuleRecord;
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 XActivityRuleDao extends AbstractVertxDAO<XActivityRuleRecord, cn.vertxup.ambient.domain.tables.pojos.XActivityRule, String, Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>>, Future<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>, Future<Integer>, Future<String>> implements io.github.jklingsporn.vertx.jooq.classic.VertxDAO<XActivityRuleRecord,cn.vertxup.ambient.domain.tables.pojos.XActivityRule,String> {

        /**
     * @param configuration The Configuration used for rendering and query
     * execution.
     * @param vertx the vertx instance
     */
        public XActivityRuleDao(Configuration configuration, io.vertx.core.Vertx vertx) {
                super(XActivityRule.X_ACTIVITY_RULE, cn.vertxup.ambient.domain.tables.pojos.XActivityRule.class, new JDBCClassicQueryExecutor<XActivityRuleRecord,cn.vertxup.ambient.domain.tables.pojos.XActivityRule,String>(configuration,cn.vertxup.ambient.domain.tables.pojos.XActivityRule.class,vertx));
        }

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

        /**
     * Find records that have <code>DEFINITION_KEY IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByDefinitionKey(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.DEFINITION_KEY.in(values));
        }

        /**
     * Find records that have <code>DEFINITION_KEY IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByDefinitionKey(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.DEFINITION_KEY.in(values),limit);
        }

        /**
     * Find records that have <code>TASK_KEY IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByTaskKey(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.TASK_KEY.in(values));
        }

        /**
     * Find records that have <code>TASK_KEY IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByTaskKey(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.TASK_KEY.in(values),limit);
        }

        /**
     * Find records that have <code>TYPE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByType(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.TYPE.in(values));
        }

        /**
     * Find records that have <code>TYPE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByType(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.TYPE.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_NAME IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleName(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_NAME.in(values));
        }

        /**
     * Find records that have <code>RULE_NAME IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleName(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_NAME.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_ORDER IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleOrder(Collection<Long> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_ORDER.in(values));
        }

        /**
     * Find records that have <code>RULE_ORDER IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleOrder(Collection<Long> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_ORDER.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_NS IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleNs(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_NS.in(values));
        }

        /**
     * Find records that have <code>RULE_NS IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleNs(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_NS.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_IDENTIFIER IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleIdentifier(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_IDENTIFIER.in(values));
        }

        /**
     * Find records that have <code>RULE_IDENTIFIER IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleIdentifier(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_IDENTIFIER.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_FIELD IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleField(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_FIELD.in(values));
        }

        /**
     * Find records that have <code>RULE_FIELD IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleField(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_FIELD.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_EXPRESSION IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleExpression(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_EXPRESSION.in(values));
        }

        /**
     * Find records that have <code>RULE_EXPRESSION IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleExpression(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_EXPRESSION.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_TPL IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleTpl(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_TPL.in(values));
        }

        /**
     * Find records that have <code>RULE_TPL IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleTpl(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_TPL.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_CONFIG IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleConfig(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_CONFIG.in(values));
        }

        /**
     * Find records that have <code>RULE_CONFIG IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleConfig(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_CONFIG.in(values),limit);
        }

        /**
     * Find records that have <code>RULE_MESSAGE IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleMessage(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_MESSAGE.in(values));
        }

        /**
     * Find records that have <code>RULE_MESSAGE IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByRuleMessage(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.RULE_MESSAGE.in(values),limit);
        }

        /**
     * Find records that have <code>HOOK_COMPONENT IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByHookComponent(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.HOOK_COMPONENT.in(values));
        }

        /**
     * Find records that have <code>HOOK_COMPONENT IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByHookComponent(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.HOOK_COMPONENT.in(values),limit);
        }

        /**
     * Find records that have <code>HOOK_CONFIG IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByHookConfig(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.HOOK_CONFIG.in(values));
        }

        /**
     * Find records that have <code>HOOK_CONFIG IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByHookConfig(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.HOOK_CONFIG.in(values),limit);
        }

        /**
     * Find records that have <code>LOGGING IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByLogging(Collection<Boolean> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.LOGGING.in(values));
        }

        /**
     * Find records that have <code>LOGGING IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByLogging(Collection<Boolean> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.LOGGING.in(values),limit);
        }

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

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

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

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

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

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

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

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

        /**
     * Find records that have <code>CREATED_AT IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByCreatedAt(Collection<LocalDateTime> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.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.ambient.domain.tables.pojos.XActivityRule>> findManyByCreatedAt(Collection<LocalDateTime> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.CREATED_AT.in(values),limit);
        }

        /**
     * Find records that have <code>CREATED_BY IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByCreatedBy(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.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.ambient.domain.tables.pojos.XActivityRule>> findManyByCreatedBy(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.CREATED_BY.in(values),limit);
        }

        /**
     * Find records that have <code>UPDATED_AT IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByUpdatedAt(Collection<LocalDateTime> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.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.ambient.domain.tables.pojos.XActivityRule>> findManyByUpdatedAt(Collection<LocalDateTime> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.UPDATED_AT.in(values),limit);
        }

        /**
     * Find records that have <code>UPDATED_BY IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.ambient.domain.tables.pojos.XActivityRule>> findManyByUpdatedBy(Collection<String> values) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.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.ambient.domain.tables.pojos.XActivityRule>> findManyByUpdatedBy(Collection<String> values, int limit) {
                return findManyByCondition(XActivityRule.X_ACTIVITY_RULE.UPDATED_BY.in(values),limit);
        }

        @Override
        public JDBCClassicQueryExecutor<XActivityRuleRecord,cn.vertxup.ambient.domain.tables.pojos.XActivityRule,String> queryExecutor(){
                return (JDBCClassicQueryExecutor<XActivityRuleRecord,cn.vertxup.ambient.domain.tables.pojos.XActivityRule,String>) super.queryExecutor();
        }
}
