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


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

        /**
     * @param configuration The Configuration used for rendering and query
     * execution.
     * @param vertx the vertx instance
     */
        public ECustomerDao(Configuration configuration, io.vertx.core.Vertx vertx) {
                super(ECustomer.E_CUSTOMER, cn.vertxup.erp.domain.tables.pojos.ECustomer.class, new JDBCClassicQueryExecutor<ECustomerRecord,cn.vertxup.erp.domain.tables.pojos.ECustomer,String>(configuration,cn.vertxup.erp.domain.tables.pojos.ECustomer.class,vertx));
        }

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

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

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

        /**
     * Find records that have <code>CODE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByCode(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CODE.in(values));
        }

        /**
     * Find records that have <code>CODE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByCode(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CODE.in(values),limit);
        }

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

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

        /**
     * Find records that have <code>STATUS IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByStatus(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.STATUS.in(values));
        }

        /**
     * Find records that have <code>STATUS IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByStatus(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.STATUS.in(values),limit);
        }

        /**
     * Find records that have <code>TAX_CODE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByTaxCode(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.TAX_CODE.in(values));
        }

        /**
     * Find records that have <code>TAX_CODE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByTaxCode(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.TAX_CODE.in(values),limit);
        }

        /**
     * Find records that have <code>TAX_TITLE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByTaxTitle(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.TAX_TITLE.in(values));
        }

        /**
     * Find records that have <code>TAX_TITLE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByTaxTitle(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.TAX_TITLE.in(values),limit);
        }

        /**
     * Find records that have <code>CONTACT_NAME IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactName(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_NAME.in(values));
        }

        /**
     * Find records that have <code>CONTACT_NAME IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactName(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_NAME.in(values),limit);
        }

        /**
     * Find records that have <code>CONTACT_PHONE IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactPhone(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_PHONE.in(values));
        }

        /**
     * Find records that have <code>CONTACT_PHONE IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactPhone(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_PHONE.in(values),limit);
        }

        /**
     * Find records that have <code>CONTACT_EMAIL IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactEmail(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_EMAIL.in(values));
        }

        /**
     * Find records that have <code>CONTACT_EMAIL IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactEmail(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_EMAIL.in(values),limit);
        }

        /**
     * Find records that have <code>CONTACT_ONLINE IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactOnline(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_ONLINE.in(values));
        }

        /**
     * Find records that have <code>CONTACT_ONLINE IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByContactOnline(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.CONTACT_ONLINE.in(values),limit);
        }

        /**
     * Find records that have <code>TITLE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByTitle(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.TITLE.in(values));
        }

        /**
     * Find records that have <code>TITLE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByTitle(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.TITLE.in(values),limit);
        }

        /**
     * Find records that have <code>COMMENT IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByComment(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.COMMENT.in(values));
        }

        /**
     * Find records that have <code>COMMENT IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByComment(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.COMMENT.in(values),limit);
        }

        /**
     * Find records that have <code>EMAIL IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByEmail(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.EMAIL.in(values));
        }

        /**
     * Find records that have <code>EMAIL IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByEmail(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.EMAIL.in(values),limit);
        }

        /**
     * Find records that have <code>FAX IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByFax(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.FAX.in(values));
        }

        /**
     * Find records that have <code>FAX IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByFax(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.FAX.in(values),limit);
        }

        /**
     * Find records that have <code>HOMEPAGE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByHomepage(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.HOMEPAGE.in(values));
        }

        /**
     * Find records that have <code>HOMEPAGE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByHomepage(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.HOMEPAGE.in(values),limit);
        }

        /**
     * Find records that have <code>LOGO IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByLogo(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.LOGO.in(values));
        }

        /**
     * Find records that have <code>LOGO IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByLogo(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.LOGO.in(values),limit);
        }

        /**
     * Find records that have <code>PHONE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByPhone(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.PHONE.in(values));
        }

        /**
     * Find records that have <code>PHONE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByPhone(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.PHONE.in(values),limit);
        }

        /**
     * Find records that have <code>ADDRESS IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByAddress(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.ADDRESS.in(values));
        }

        /**
     * Find records that have <code>ADDRESS IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByAddress(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.ADDRESS.in(values),limit);
        }

        /**
     * Find records that have <code>SIGN_NAME IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyBySignName(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.SIGN_NAME.in(values));
        }

        /**
     * Find records that have <code>SIGN_NAME IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyBySignName(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.SIGN_NAME.in(values),limit);
        }

        /**
     * Find records that have <code>SIGN_PHONE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyBySignPhone(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.SIGN_PHONE.in(values));
        }

        /**
     * Find records that have <code>SIGN_PHONE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyBySignPhone(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.SIGN_PHONE.in(values),limit);
        }

        /**
     * Find records that have <code>RUN_UP IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByRunUp(Collection<Boolean> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.RUN_UP.in(values));
        }

        /**
     * Find records that have <code>RUN_UP IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByRunUp(Collection<Boolean> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.RUN_UP.in(values),limit);
        }

        /**
     * Find records that have <code>RUN_UP_AMOUNT IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByRunUpAmount(Collection<BigDecimal> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.RUN_UP_AMOUNT.in(values));
        }

        /**
     * Find records that have <code>RUN_UP_AMOUNT IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByRunUpAmount(Collection<BigDecimal> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.RUN_UP_AMOUNT.in(values),limit);
        }

        /**
     * Find records that have <code>BANK_ID IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByBankId(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.BANK_ID.in(values));
        }

        /**
     * Find records that have <code>BANK_ID IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByBankId(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.BANK_ID.in(values),limit);
        }

        /**
     * Find records that have <code>BANK_CARD IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByBankCard(Collection<String> values) {
                return findManyByCondition(ECustomer.E_CUSTOMER.BANK_CARD.in(values));
        }

        /**
     * Find records that have <code>BANK_CARD IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.erp.domain.tables.pojos.ECustomer>> findManyByBankCard(Collection<String> values, int limit) {
                return findManyByCondition(ECustomer.E_CUSTOMER.BANK_CARD.in(values),limit);
        }

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public JDBCClassicQueryExecutor<ECustomerRecord,cn.vertxup.erp.domain.tables.pojos.ECustomer,String> queryExecutor(){
                return (JDBCClassicQueryExecutor<ECustomerRecord,cn.vertxup.erp.domain.tables.pojos.ECustomer,String>) super.queryExecutor();
        }
}
