/*
 * This file is generated by jOOQ.
 */
package ru.micord.ervu_dashboard.db_beans.ervu_dashboard.tables;


import java.sql.Time;
import java.sql.Timestamp;
import java.util.Collection;
import java.util.UUID;

import org.jooq.Condition;
import org.jooq.Field;
import org.jooq.Identity;
import org.jooq.Name;
import org.jooq.PlainSQL;
import org.jooq.QueryPart;
import org.jooq.SQL;
import org.jooq.Schema;
import org.jooq.Select;
import org.jooq.Stringly;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.TableOptions;
import org.jooq.UniqueKey;
import org.jooq.impl.DSL;
import org.jooq.impl.SQLDataType;
import org.jooq.impl.TableImpl;

import ru.micord.ervu_dashboard.db_beans.ervu_dashboard.ErvuDashboard;
import ru.micord.ervu_dashboard.db_beans.ervu_dashboard.Keys;
import ru.micord.ervu_dashboard.db_beans.ervu_dashboard.tables.records.SubpoenaRecord;


/**
 * сведения о направлении повестки военного комиссариата
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Subpoena extends TableImpl<SubpoenaRecord> {

    private static final long serialVersionUID = 1L;

    /**
     * The reference instance of <code>ervu_dashboard.subpoena</code>
     */
    public static final Subpoena SUBPOENA = new Subpoena();

    /**
     * The class holding records for this type
     */
    @Override
    public Class<SubpoenaRecord> getRecordType() {
        return SubpoenaRecord.class;
    }

    /**
     * The column <code>ervu_dashboard.subpoena.sub_id</code>.
     */
    public final TableField<SubpoenaRecord, Long> SUB_ID = createField(DSL.name("sub_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, "");

    /**
     * The column <code>ervu_dashboard.subpoena.series</code>. серия повестки
     */
    public final TableField<SubpoenaRecord, String> SERIES = createField(DSL.name("series"), SQLDataType.VARCHAR(16), this, "серия повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.number</code>. номер повестки
     */
    public final TableField<SubpoenaRecord, String> NUMBER = createField(DSL.name("number"), SQLDataType.VARCHAR(36).nullable(false), this, "номер повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.create_date</code>. дата
     * создания записи
     */
    public final TableField<SubpoenaRecord, Timestamp> CREATE_DATE = createField(DSL.name("create_date"), SQLDataType.TIMESTAMP(0).nullable(false).defaultValue(DSL.field(DSL.raw("now()"), SQLDataType.TIMESTAMP)), this, "дата создания записи");

    /**
     * The column <code>ervu_dashboard.subpoena.visit_date</code>. время и дата
     * явки в ВК
     */
    public final TableField<SubpoenaRecord, Timestamp> VISIT_DATE = createField(DSL.name("visit_date"), SQLDataType.TIMESTAMP(0), this, "время и дата явки в ВК");

    /**
     * The column <code>ervu_dashboard.subpoena.send_date</code>. дата
     * направления повестки
     */
    public final TableField<SubpoenaRecord, Timestamp> SEND_DATE = createField(DSL.name("send_date"), SQLDataType.TIMESTAMP(0), this, "дата направления повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.reason_cancelled</code>. причина
     * отклонения повестки
     */
    public final TableField<SubpoenaRecord, String> REASON_CANCELLED = createField(DSL.name("reason_cancelled"), SQLDataType.VARCHAR(255), this, "причина отклонения повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.recruit_id</code>. идентификатор
     * рекрута
     */
    public final TableField<SubpoenaRecord, UUID> RECRUIT_ID = createField(DSL.name("recruit_id"), SQLDataType.UUID, this, "идентификатор рекрута");

    /**
     * The column <code>ervu_dashboard.subpoena.department_id</code>.
     * идентификатор ВК
     */
    public final TableField<SubpoenaRecord, UUID> DEPARTMENT_ID = createField(DSL.name("department_id"), SQLDataType.UUID, this, "идентификатор ВК");

    /**
     * The column <code>ervu_dashboard.subpoena.subpoena_status</code>. статус
     * повестки
     */
    public final TableField<SubpoenaRecord, String> SUBPOENA_STATUS = createField(DSL.name("subpoena_status"), SQLDataType.CLOB, this, "статус повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.subpoena_reason</code>. причина
     * вызова по повестке
     */
    public final TableField<SubpoenaRecord, String> SUBPOENA_REASON = createField(DSL.name("subpoena_reason"), SQLDataType.CLOB, this, "причина вызова по повестке");

    /**
     * The column <code>ervu_dashboard.subpoena.fio_commiss</code>. фио
     * комиссара
     */
    public final TableField<SubpoenaRecord, String> FIO_COMMISS = createField(DSL.name("fio_commiss"), SQLDataType.CLOB, this, "фио комиссара");

    /**
     * The column <code>ervu_dashboard.subpoena.track_number</code>. уникальный
     * номер заказного почтового отправления, которым направлена повестка
     */
    public final TableField<SubpoenaRecord, String> TRACK_NUMBER = createField(DSL.name("track_number"), SQLDataType.CLOB, this, "уникальный номер заказного почтового отправления, которым направлена повестка");

    /**
     * The column <code>ervu_dashboard.subpoena.recruitment_name</code>.
     * наименование ВК, направившего повестку
     */
    public final TableField<SubpoenaRecord, String> RECRUITMENT_NAME = createField(DSL.name("recruitment_name"), SQLDataType.CLOB, this, "наименование ВК, направившего повестку");

    /**
     * The column <code>ervu_dashboard.subpoena.address</code>. адрес, по
     * которому нужно явиться по повестке
     */
    public final TableField<SubpoenaRecord, String> ADDRESS = createField(DSL.name("address"), SQLDataType.CLOB, this, "адрес, по которому нужно явиться по повестке");

    /**
     * The column <code>ervu_dashboard.subpoena.method_sending</code>. способ
     * направления повестки
     */
    public final TableField<SubpoenaRecord, String> METHOD_SENDING = createField(DSL.name("method_sending"), SQLDataType.CLOB, this, "способ направления повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.subpoena_id</code>.
     * идентификатор повестки
     */
    public final TableField<SubpoenaRecord, UUID> SUBPOENA_ID = createField(DSL.name("subpoena_id"), SQLDataType.UUID, this, "идентификатор повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.sig_info</code>. открепленная ЭП
     */
    public final TableField<SubpoenaRecord, String> SIG_INFO = createField(DSL.name("sig_info"), SQLDataType.VARCHAR(255), this, "открепленная ЭП");

    /**
     * The column <code>ervu_dashboard.subpoena.delivery_fio</code>. фио лица,
     * оповестившего гражданина о последствиях отказа от получения повестки
     */
    public final TableField<SubpoenaRecord, String> DELIVERY_FIO = createField(DSL.name("delivery_fio"), SQLDataType.CLOB, this, "фио лица, оповестившего гражданина о последствиях отказа от получения повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.act_number</code>. номер акта об
     * отказе от получения повестки
     */
    public final TableField<SubpoenaRecord, String> ACT_NUMBER = createField(DSL.name("act_number"), SQLDataType.CLOB, this, "номер акта об отказе от получения повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.method_delivery</code>. способ
     * вручения
     */
    public final TableField<SubpoenaRecord, String> METHOD_DELIVERY = createField(DSL.name("method_delivery"), SQLDataType.CLOB, this, "способ вручения");

    /**
     * The column <code>ervu_dashboard.subpoena.delivery_date</code>.
     */
    public final TableField<SubpoenaRecord, Timestamp> DELIVERY_DATE = createField(DSL.name("delivery_date"), SQLDataType.TIMESTAMP(0), this, "");

    /**
     * The column <code>ervu_dashboard.subpoena.delivery_status</code>.
     */
    public final TableField<SubpoenaRecord, String> DELIVERY_STATUS = createField(DSL.name("delivery_status"), SQLDataType.CLOB, this, "");

    /**
     * The column <code>ervu_dashboard.subpoena.appearance</code>.
     */
    public final TableField<SubpoenaRecord, String> APPEARANCE = createField(DSL.name("appearance"), SQLDataType.CLOB, this, "");

    /**
     * The column <code>ervu_dashboard.subpoena.appearance_status</code>.
     */
    public final TableField<SubpoenaRecord, String> APPEARANCE_STATUS = createField(DSL.name("appearance_status"), SQLDataType.CLOB, this, "");

    /**
     * The column <code>ervu_dashboard.subpoena.date_public_register</code>.
     * Дата размещения в общедоступном реестре направленных (врученных) повесток
     */
    public final TableField<SubpoenaRecord, Time> DATE_PUBLIC_REGISTER = createField(DSL.name("date_public_register"), SQLDataType.TIME(6), this, "Дата размещения в общедоступном реестре направленных (врученных) повесток");

    /**
     * The column <code>ervu_dashboard.subpoena.visit_date_true</code>. Дата
     * явки (в случае явки)
     */
    public final TableField<SubpoenaRecord, Time> VISIT_DATE_TRUE = createField(DSL.name("visit_date_true"), SQLDataType.TIME(6), this, "Дата явки (в случае явки)");

    /**
     * The column <code>ervu_dashboard.subpoena.date_recognition_reason</code>.
     * Дата признания причины неявки в военный комиссариат по повестке
     * уважительной
     */
    public final TableField<SubpoenaRecord, Time> DATE_RECOGNITION_REASON = createField(DSL.name("date_recognition_reason"), SQLDataType.TIME(6), this, "Дата признания причины неявки в военный комиссариат по повестке уважительной");

    /**
     * The column
     * <code>ervu_dashboard.subpoena.sign_sending_info_good_reason</code>.
     * Признак направления сведений о неявке по уважительной причине
     */
    public final TableField<SubpoenaRecord, Boolean> SIGN_SENDING_INFO_GOOD_REASON = createField(DSL.name("sign_sending_info_good_reason"), SQLDataType.BOOLEAN, this, "Признак направления сведений о неявке по уважительной причине");

    /**
     * The column <code>ervu_dashboard.subpoena.date_sending_good_reason</code>.
     * Дата направления сведений об уважительной причине неявки
     */
    public final TableField<SubpoenaRecord, Time> DATE_SENDING_GOOD_REASON = createField(DSL.name("date_sending_good_reason"), SQLDataType.TIME(6), this, "Дата направления сведений об уважительной причине неявки");

    /**
     * The column
     * <code>ervu_dashboard.subpoena.info_not_visit_recognition_good_reason</code>.
     * Сведения о признании причины неявки в военный комиссариат по повестке
     * уважительной
     */
    public final TableField<SubpoenaRecord, String> INFO_NOT_VISIT_RECOGNITION_GOOD_REASON = createField(DSL.name("info_not_visit_recognition_good_reason"), SQLDataType.VARCHAR, this, "Сведения о признании причины неявки в военный комиссариат по повестке уважительной");

    /**
     * The column <code>ervu_dashboard.subpoena.subpoena_directed_fact</code>.
     * Факт направления повестки
     */
    public final TableField<SubpoenaRecord, String> SUBPOENA_DIRECTED_FACT = createField(DSL.name("subpoena_directed_fact"), SQLDataType.CLOB, this, "Факт направления повестки");

    /**
     * The column <code>ervu_dashboard.subpoena.status_change_date</code>.
     */
    public final TableField<SubpoenaRecord, Timestamp> STATUS_CHANGE_DATE = createField(DSL.name("status_change_date"), SQLDataType.TIMESTAMP(0), this, "");

    /**
     * The column <code>ervu_dashboard.subpoena.active_status</code>.
     */
    public final TableField<SubpoenaRecord, Boolean> ACTIVE_STATUS = createField(DSL.name("active_status"), SQLDataType.BOOLEAN, this, "");

    private Subpoena(Name alias, Table<SubpoenaRecord> aliased) {
        this(alias, aliased, (Field<?>[]) null, null);
    }

    private Subpoena(Name alias, Table<SubpoenaRecord> aliased, Field<?>[] parameters, Condition where) {
        super(alias, null, aliased, parameters, DSL.comment("сведения о направлении повестки военного комиссариата"), TableOptions.table(), where);
    }

    /**
     * Create an aliased <code>ervu_dashboard.subpoena</code> table reference
     */
    public Subpoena(String alias) {
        this(DSL.name(alias), SUBPOENA);
    }

    /**
     * Create an aliased <code>ervu_dashboard.subpoena</code> table reference
     */
    public Subpoena(Name alias) {
        this(alias, SUBPOENA);
    }

    /**
     * Create a <code>ervu_dashboard.subpoena</code> table reference
     */
    public Subpoena() {
        this(DSL.name("subpoena"), null);
    }

    @Override
    public Schema getSchema() {
        return aliased() ? null : ErvuDashboard.ERVU_DASHBOARD;
    }

    @Override
    public Identity<SubpoenaRecord, Long> getIdentity() {
        return (Identity<SubpoenaRecord, Long>) super.getIdentity();
    }

    @Override
    public UniqueKey<SubpoenaRecord> getPrimaryKey() {
        return Keys.SUBPOENA_PKEY;
    }

    @Override
    public Subpoena as(String alias) {
        return new Subpoena(DSL.name(alias), this);
    }

    @Override
    public Subpoena as(Name alias) {
        return new Subpoena(alias, this);
    }

    @Override
    public Subpoena as(Table<?> alias) {
        return new Subpoena(alias.getQualifiedName(), this);
    }

    /**
     * Rename this table
     */
    @Override
    public Subpoena rename(String name) {
        return new Subpoena(DSL.name(name), null);
    }

    /**
     * Rename this table
     */
    @Override
    public Subpoena rename(Name name) {
        return new Subpoena(name, null);
    }

    /**
     * Rename this table
     */
    @Override
    public Subpoena rename(Table<?> name) {
        return new Subpoena(name.getQualifiedName(), null);
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    public Subpoena where(Condition condition) {
        return new Subpoena(getQualifiedName(), aliased() ? this : null, null, condition);
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    public Subpoena where(Collection<? extends Condition> conditions) {
        return where(DSL.and(conditions));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    public Subpoena where(Condition... conditions) {
        return where(DSL.and(conditions));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    public Subpoena where(Field<Boolean> condition) {
        return where(DSL.condition(condition));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    @PlainSQL
    public Subpoena where(SQL condition) {
        return where(DSL.condition(condition));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    @PlainSQL
    public Subpoena where(@Stringly.SQL String condition) {
        return where(DSL.condition(condition));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    @PlainSQL
    public Subpoena where(@Stringly.SQL String condition, Object... binds) {
        return where(DSL.condition(condition, binds));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    @PlainSQL
    public Subpoena where(@Stringly.SQL String condition, QueryPart... parts) {
        return where(DSL.condition(condition, parts));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    public Subpoena whereExists(Select<?> select) {
        return where(DSL.exists(select));
    }

    /**
     * Create an inline derived table from this table
     */
    @Override
    public Subpoena whereNotExists(Select<?> select) {
        return where(DSL.notExists(select));
    }
}
