/*
 * 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.SysAdmin;
import jj.tech.paolu.repository.jooq.tables.records.SysAdminRecord;

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 SysAdminDao extends DAOImpl<SysAdminRecord, jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin, String> {

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

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

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

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

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

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

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

    /**
     * Fetch records that have <code>org_id BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchRangeOfOrgId(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysAdmin.SYS_ADMIN.ORG_ID, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>org_id IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchByOrgId(String... values) {
        return fetch(SysAdmin.SYS_ADMIN.ORG_ID, values);
    }

    /**
     * Fetch records that have <code>type BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchRangeOfType(Integer lowerInclusive, Integer upperInclusive) {
        return fetchRange(SysAdmin.SYS_ADMIN.TYPE, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>type IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchByType(Integer... values) {
        return fetch(SysAdmin.SYS_ADMIN.TYPE, values);
    }

    /**
     * Fetch records that have <code>realname BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchRangeOfRealname(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysAdmin.SYS_ADMIN.REALNAME, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>realname IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchByRealname(String... values) {
        return fetch(SysAdmin.SYS_ADMIN.REALNAME, values);
    }

    /**
     * Fetch records that have <code>username BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchRangeOfUsername(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysAdmin.SYS_ADMIN.USERNAME, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>username IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchByUsername(String... values) {
        return fetch(SysAdmin.SYS_ADMIN.USERNAME, values);
    }

    /**
     * Fetch a unique record that has <code>username = value</code>
     */
    public jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin fetchOneByUsername(String value) {
        return fetchOne(SysAdmin.SYS_ADMIN.USERNAME, value);
    }

    /**
     * Fetch a unique record that has <code>username = value</code>
     */
    public Optional<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchOptionalByUsername(String value) {
        return fetchOptional(SysAdmin.SYS_ADMIN.USERNAME, value);
    }

    /**
     * Fetch records that have <code>password BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchRangeOfPassword(String lowerInclusive, String upperInclusive) {
        return fetchRange(SysAdmin.SYS_ADMIN.PASSWORD, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>password IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchByPassword(String... values) {
        return fetch(SysAdmin.SYS_ADMIN.PASSWORD, values);
    }

    /**
     * Fetch records that have <code>islock BETWEEN lowerInclusive AND
     * upperInclusive</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchRangeOfIslock(Integer lowerInclusive, Integer upperInclusive) {
        return fetchRange(SysAdmin.SYS_ADMIN.ISLOCK, lowerInclusive, upperInclusive);
    }

    /**
     * Fetch records that have <code>islock IN (values)</code>
     */
    public List<jj.tech.paolu.repository.jooq.tables.pojos.SysAdmin> fetchByIslock(Integer... values) {
        return fetch(SysAdmin.SYS_ADMIN.ISLOCK, values);
    }
}
