/*
 * This file is generated by jOOQ.
 */
package jj.tech.paolu.repository.jooq.tables.daos;


import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

import jj.tech.paolu.repository.jooq.tables.SysConfig;
import jj.tech.paolu.repository.jooq.tables.records.SysConfigRecord;

import org.jooq.Configuration;
import org.jooq.impl.DAOImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;


/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
@Repository
public class SysConfigDao extends DAOImpl<SysConfigRecord, jj.tech.paolu.repository.jooq.tables.pojos.SysConfig, String> {

    /**
     * Create a new SysConfigDao without any configuration
     */
    public SysConfigDao() {
        super(SysConfig.SYS_CONFIG, jj.tech.paolu.repository.jooq.tables.pojos.SysConfig.class);
    }

    /**
     * Create a new SysConfigDao with an attached configuration
     */
    @Autowired
    public SysConfigDao(Configuration configuration) {
        super(SysConfig.SYS_CONFIG, jj.tech.paolu.repository.jooq.tables.pojos.SysConfig.class, configuration);
    }

    @Override
    public String getId(jj.tech.paolu.repository.jooq.tables.pojos.SysConfig object) {
        return object.getId();
    }

    /**
     * Fetch records that have <code>id BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchRangeOfId(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysConfig.SYS_CONFIG.ID, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>id IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchById(String... values) {
        return fetch(SysConfig.SYS_CONFIG.ID, values);
    }

    /**
     * Fetch a unique record that has <code>id = value</code>
     */
    public jj.tech.paolu.repository.jooq.tables.pojos.SysConfig fetchOneById(String value) {
        return fetchOne(SysConfig.SYS_CONFIG.ID, value);
    }

    /**
     * Fetch a unique record that has <code>id = value</code>
     */
    public Optional<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchOptionalById(String value) {
        return fetchOptional(SysConfig.SYS_CONFIG.ID, value);
    }

    /**
     * Fetch records that have <code>subgroup BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchRangeOfSubgroup(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysConfig.SYS_CONFIG.SUBGROUP, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>subgroup IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchBySubgroup(String... values) {
        return fetch(SysConfig.SYS_CONFIG.SUBGROUP, values);
    }

    /**
     * Fetch records that have <code>k BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchRangeOfK(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysConfig.SYS_CONFIG.K, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>k IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchByK(String... values) {
        return fetch(SysConfig.SYS_CONFIG.K, values);
    }

    /**
     * Fetch a unique record that has <code>k = value</code>
     */
    public jj.tech.paolu.repository.jooq.tables.pojos.SysConfig fetchOneByK(String value) {
        return fetchOne(SysConfig.SYS_CONFIG.K, value);
    }

    /**
     * Fetch a unique record that has <code>k = value</code>
     */
    public Optional<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchOptionalByK(String value) {
        return fetchOptional(SysConfig.SYS_CONFIG.K, value);
    }

    /**
     * Fetch records that have <code>val BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchRangeOfVal(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysConfig.SYS_CONFIG.VAL, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>val IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchByVal(String... values) {
        return fetch(SysConfig.SYS_CONFIG.VAL, values);
    }

    /**
     * Fetch records that have <code>admin_id BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchRangeOfAdminId(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysConfig.SYS_CONFIG.ADMIN_ID, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>admin_id IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchByAdminId(String... values) {
        return fetch(SysConfig.SYS_CONFIG.ADMIN_ID, values);
    }

    /**
     * Fetch records that have <code>adminname BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchRangeOfAdminname(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysConfig.SYS_CONFIG.ADMINNAME, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>adminname IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchByAdminname(String... values) {
        return fetch(SysConfig.SYS_CONFIG.ADMINNAME, values);
    }

    /**
     * Fetch records that have <code>edittime BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchRangeOfEdittime(LocalDateTime lowerInclusive, LocalDateTime upperInclusive) {
        return fetchRange(SysConfig.SYS_CONFIG.EDITTIME, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>edittime IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysConfig> fetchByEdittime(LocalDateTime... values) {
        return fetch(SysConfig.SYS_CONFIG.EDITTIME, values);
    }
}
