/*
 * This file is generated by jOOQ.
*/
package org.robertux.data.jooq.tables;


import org.jooq.*;
import org.jooq.impl.TableImpl;
import org.robertux.data.jooq.DefaultSchema;
import org.robertux.data.jooq.Keys;
import org.robertux.data.jooq.tables.records.CategoryRecord;

import javax.annotation.Generated;
import java.util.Arrays;
import java.util.List;


/**
 * This class is generated by jOOQ.
 */
@Generated(
        value = {
                "http://www.jooq.org",
                "jOOQ version:3.9.1"
        },
        comments = "This class is generated by jOOQ"
)
@SuppressWarnings({"all", "unchecked", "rawtypes"})
public class Category extends TableImpl<CategoryRecord> {

    /**
     * The reference instance of <code>Category</code>
     */
    public static final Category CATEGORY = new Category();
    private static final long serialVersionUID = 1885542818;
    /**
     * The column <code>Category.id</code>.
     */
    public final TableField<CategoryRecord, Integer> ID = createField("id", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
    /**
     * The column <code>Category.name</code>.
     */
    public final TableField<CategoryRecord, String> NAME = createField("name", org.jooq.impl.SQLDataType.CLOB.nullable(false), this, "");

    /**
     * Create a <code>Category</code> table reference
     */
    public Category() {
        this("Category", null);
    }

    /**
     * Create an aliased <code>Category</code> table reference
     */
    public Category(String alias) {
        this(alias, CATEGORY);
    }

    private Category(String alias, Table<CategoryRecord> aliased) {
        this(alias, aliased, null);
    }

    private Category(String alias, Table<CategoryRecord> aliased, Field<?>[] parameters) {
        super(alias, null, aliased, parameters, "");
    }

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

    /**
     * {@inheritDoc}
     */
    @Override
    public Schema getSchema() {
        return DefaultSchema.DEFAULT_SCHEMA;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public UniqueKey<CategoryRecord> getPrimaryKey() {
        return Keys.PK_CATEGORY;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public List<UniqueKey<CategoryRecord>> getKeys() {
        return Arrays.<UniqueKey<CategoryRecord>>asList(Keys.PK_CATEGORY);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public Category as(String alias) {
        return new Category(alias, this);
    }

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