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


import java.util.List;
import java.util.Optional;

import jj.tech.paolu.repository.jooq.tables.SysMenu;
import jj.tech.paolu.repository.jooq.tables.records.SysMenuRecord;

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 SysMenuDao extends DAOImpl<SysMenuRecord, jj.tech.paolu.repository.jooq.tables.pojos.SysMenu, String> {

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

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

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

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

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

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

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

    /**
     * Fetch records that have <code>parent_id BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfParentId(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.PARENT_ID, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>parent_id IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByParentId(String... values) {
        return fetch(SysMenu.SYS_MENU.PARENT_ID, values);
    }

    /**
     * Fetch records that have <code>level BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfLevel(Integer lowerInclusive, Integer upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.LEVEL, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>level IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByLevel(Integer... values) {
        return fetch(SysMenu.SYS_MENU.LEVEL, values);
    }

    /**
     * Fetch records that have <code>name BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfName(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.NAME, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>name IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByName(String... values) {
        return fetch(SysMenu.SYS_MENU.NAME, values);
    }

    /**
     * Fetch records that have <code>types BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfTypes(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.TYPES, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>types IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByTypes(String... values) {
        return fetch(SysMenu.SYS_MENU.TYPES, values);
    }

    /**
     * Fetch records that have <code>url BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfUrl(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.URL, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>url IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByUrl(String... values) {
        return fetch(SysMenu.SYS_MENU.URL, values);
    }

    /**
     * Fetch records that have <code>icon BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfIcon(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.ICON, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>icon IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByIcon(String... values) {
        return fetch(SysMenu.SYS_MENU.ICON, values);
    }

    /**
     * Fetch records that have <code>is_open BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfIsOpen(Integer lowerInclusive, Integer upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.IS_OPEN, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>is_open IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByIsOpen(Integer... values) {
        return fetch(SysMenu.SYS_MENU.IS_OPEN, values);
    }

    /**
     * Fetch records that have <code>description BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfDescription(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.DESCRIPTION, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>description IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchByDescription(String... values) {
        return fetch(SysMenu.SYS_MENU.DESCRIPTION, values);
    }

    /**
     * Fetch records that have <code>sort BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchRangeOfSort(Integer lowerInclusive, Integer upperInclusive) {
        return fetchRange(SysMenu.SYS_MENU.SORT, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>sort IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysMenu> fetchBySort(Integer... values) {
        return fetch(SysMenu.SYS_MENU.SORT, values);
    }
}
