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


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

        /**
     * @param configuration The Configuration used for rendering and query
     * execution.
     * @param vertx the vertx instance
     */
        public IPortfolioDao(Configuration configuration, io.vertx.core.Vertx vertx) {
                super(IPortfolio.I_PORTFOLIO, cn.vertxup.integration.domain.tables.pojos.IPortfolio.class, new JDBCClassicQueryExecutor<IPortfolioRecord,cn.vertxup.integration.domain.tables.pojos.IPortfolio,String>(configuration,cn.vertxup.integration.domain.tables.pojos.IPortfolio.class,vertx));
        }

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

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

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

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

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

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

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

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

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

        /**
     * Find records that have <code>INTEGRATION_ID IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByIntegrationId(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.INTEGRATION_ID.in(values));
        }

        /**
     * Find records that have <code>INTEGRATION_ID IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByIntegrationId(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.INTEGRATION_ID.in(values),limit);
        }

        /**
     * Find records that have <code>OWNER_TYPE IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByOwnerType(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.OWNER_TYPE.in(values));
        }

        /**
     * Find records that have <code>OWNER_TYPE IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByOwnerType(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.OWNER_TYPE.in(values),limit);
        }

        /**
     * Find records that have <code>OWNER IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByOwner(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.OWNER.in(values));
        }

        /**
     * Find records that have <code>OWNER IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByOwner(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.OWNER.in(values),limit);
        }

        /**
     * Find records that have <code>RUN_COMPONENT IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByRunComponent(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.RUN_COMPONENT.in(values));
        }

        /**
     * Find records that have <code>RUN_COMPONENT IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByRunComponent(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.RUN_COMPONENT.in(values),limit);
        }

        /**
     * Find records that have <code>RUN_CONFIG IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByRunConfig(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.RUN_CONFIG.in(values));
        }

        /**
     * Find records that have <code>RUN_CONFIG IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByRunConfig(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.RUN_CONFIG.in(values),limit);
        }

        /**
     * Find records that have <code>DATA_KEY IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataKey(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_KEY.in(values));
        }

        /**
     * Find records that have <code>DATA_KEY IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataKey(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_KEY.in(values),limit);
        }

        /**
     * Find records that have <code>DATA_CONFIG IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataConfig(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_CONFIG.in(values));
        }

        /**
     * Find records that have <code>DATA_CONFIG IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataConfig(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_CONFIG.in(values),limit);
        }

        /**
     * Find records that have <code>DATA_SECURE IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataSecure(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_SECURE.in(values));
        }

        /**
     * Find records that have <code>DATA_SECURE IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataSecure(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_SECURE.in(values),limit);
        }

        /**
     * Find records that have <code>DATA_INTEGRATION IN (values)</code>
     * asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataIntegration(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_INTEGRATION.in(values));
        }

        /**
     * Find records that have <code>DATA_INTEGRATION IN (values)</code>
     * asynchronously limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByDataIntegration(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.DATA_INTEGRATION.in(values),limit);
        }

        /**
     * Find records that have <code>APP_ID IN (values)</code> asynchronously
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByAppId(Collection<String> values) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.APP_ID.in(values));
        }

        /**
     * Find records that have <code>APP_ID IN (values)</code> asynchronously
     * limited by the given limit
     */
        public Future<List<cn.vertxup.integration.domain.tables.pojos.IPortfolio>> findManyByAppId(Collection<String> values, int limit) {
                return findManyByCondition(IPortfolio.I_PORTFOLIO.APP_ID.in(values),limit);
        }

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

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

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

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

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

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

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

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

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

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

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

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

        @Override
        public JDBCClassicQueryExecutor<IPortfolioRecord,cn.vertxup.integration.domain.tables.pojos.IPortfolio,String> queryExecutor(){
                return (JDBCClassicQueryExecutor<IPortfolioRecord,cn.vertxup.integration.domain.tables.pojos.IPortfolio,String>) super.queryExecutor();
        }
}
