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


import cn.vertxup.battery.domain.tables.BComponent;
import cn.vertxup.battery.domain.tables.records.BComponentRecord;
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.util.Collection;
import java.util.List;
/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class BComponentDao extends AbstractVertxDAO<BComponentRecord, cn.vertxup.battery.domain.tables.pojos.BComponent, String, Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>>, Future<cn.vertxup.battery.domain.tables.pojos.BComponent>, Future<Integer>, Future<String>> implements io.github.jklingsporn.vertx.jooq.classic.VertxDAO<BComponentRecord,cn.vertxup.battery.domain.tables.pojos.BComponent,String> {

        /**
     * @param configuration The Configuration used for rendering and query
     * execution.
     * @param vertx the vertx instance
     */
        public BComponentDao(Configuration configuration, io.vertx.core.Vertx vertx) {
                super(BComponent.B_COMPONENT, cn.vertxup.battery.domain.tables.pojos.BComponent.class, new JDBCClassicQueryExecutor<BComponentRecord,cn.vertxup.battery.domain.tables.pojos.BComponent,String>(configuration,cn.vertxup.battery.domain.tables.pojos.BComponent.class,vertx));
        }

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

        /**
     * Find records that have <code>BLOCK_ID IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByBlockId(Collection<String> values) {
                return findManyByCondition(BComponent.B_COMPONENT.BLOCK_ID.in(values));
        }

        /**
     * Find records that have <code>BLOCK_ID IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByBlockId(Collection<String> values, int limit) {
                return findManyByCondition(BComponent.B_COMPONENT.BLOCK_ID.in(values),limit);
        }

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

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

        /**
     * Find records that have <code>MAVEN_AID IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByMavenAid(Collection<String> values) {
                return findManyByCondition(BComponent.B_COMPONENT.MAVEN_AID.in(values));
        }

        /**
     * Find records that have <code>MAVEN_AID IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByMavenAid(Collection<String> values, int limit) {
                return findManyByCondition(BComponent.B_COMPONENT.MAVEN_AID.in(values),limit);
        }

        /**
     * Find records that have <code>MAVEN_GID IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByMavenGid(Collection<String> values) {
                return findManyByCondition(BComponent.B_COMPONENT.MAVEN_GID.in(values));
        }

        /**
     * Find records that have <code>MAVEN_GID IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByMavenGid(Collection<String> values, int limit) {
                return findManyByCondition(BComponent.B_COMPONENT.MAVEN_GID.in(values),limit);
        }

        /**
     * Find records that have <code>SPEC_INTERFACE IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyBySpecInterface(Collection<String> values) {
                return findManyByCondition(BComponent.B_COMPONENT.SPEC_INTERFACE.in(values));
        }

        /**
     * Find records that have <code>SPEC_INTERFACE IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyBySpecInterface(Collection<String> values, int limit) {
                return findManyByCondition(BComponent.B_COMPONENT.SPEC_INTERFACE.in(values),limit);
        }

        /**
     * Find records that have <code>SPEC_IMPL IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyBySpecImpl(Collection<String> values) {
                return findManyByCondition(BComponent.B_COMPONENT.SPEC_IMPL.in(values));
        }

        /**
     * Find records that have <code>SPEC_IMPL IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyBySpecImpl(Collection<String> values, int limit) {
                return findManyByCondition(BComponent.B_COMPONENT.SPEC_IMPL.in(values),limit);
        }

        /**
     * Find records that have <code>INTEGRATED IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByIntegrated(Collection<Boolean> values) {
                return findManyByCondition(BComponent.B_COMPONENT.INTEGRATED.in(values));
        }

        /**
     * Find records that have <code>INTEGRATED IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.battery.domain.tables.pojos.BComponent>> findManyByIntegrated(Collection<Boolean> values, int limit) {
                return findManyByCondition(BComponent.B_COMPONENT.INTEGRATED.in(values),limit);
        }

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

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

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

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

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

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

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

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

        @Override
        public JDBCClassicQueryExecutor<BComponentRecord,cn.vertxup.battery.domain.tables.pojos.BComponent,String> queryExecutor(){
                return (JDBCClassicQueryExecutor<BComponentRecord,cn.vertxup.battery.domain.tables.pojos.BComponent,String>) super.queryExecutor();
        }
}
