/*
 * This file is generated by jOOQ.
 */
package org.jooq.meta.duckdb.system.main;


import java.util.Arrays;
import java.util.List;

import org.jooq.Catalog;
import org.jooq.Table;
import org.jooq.impl.DSL;
import org.jooq.impl.SchemaImpl;
import org.jooq.meta.duckdb.system.System;
import org.jooq.meta.duckdb.system.main.tables.DuckdbColumns;
import org.jooq.meta.duckdb.system.main.tables.DuckdbConstraints;
import org.jooq.meta.duckdb.system.main.tables.DuckdbDatabases;
import org.jooq.meta.duckdb.system.main.tables.DuckdbIndexes;
import org.jooq.meta.duckdb.system.main.tables.DuckdbSchemas;
import org.jooq.meta.duckdb.system.main.tables.DuckdbTables;
import org.jooq.meta.duckdb.system.main.tables.DuckdbTypes;
import org.jooq.meta.duckdb.system.main.tables.DuckdbViews;


/**
 * This class is generated by jOOQ.
 */
@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
public class Main extends SchemaImpl {

    private static final long serialVersionUID = 1L;

    /**
     * The reference instance of <code>system.main</code>
     */
    public static final Main MAIN = new Main();

    /**
     * The table <code>system.main.duckdb_columns</code>.
     */
    public final DuckdbColumns DUCKDB_COLUMNS = DuckdbColumns.DUCKDB_COLUMNS;

    /**
     * The table <code>system.main.duckdb_constraints</code>.
     */
    public final DuckdbConstraints DUCKDB_CONSTRAINTS = DuckdbConstraints.DUCKDB_CONSTRAINTS;

    /**
     * The table <code>system.main.duckdb_databases</code>.
     */
    public final DuckdbDatabases DUCKDB_DATABASES = DuckdbDatabases.DUCKDB_DATABASES;

    /**
     * The table <code>system.main.duckdb_indexes</code>.
     */
    public final DuckdbIndexes DUCKDB_INDEXES = DuckdbIndexes.DUCKDB_INDEXES;

    /**
     * The table <code>system.main.duckdb_schemas</code>.
     */
    public final DuckdbSchemas DUCKDB_SCHEMAS = DuckdbSchemas.DUCKDB_SCHEMAS;

    /**
     * The table <code>system.main.duckdb_tables</code>.
     */
    public final DuckdbTables DUCKDB_TABLES = DuckdbTables.DUCKDB_TABLES;

    /**
     * The table <code>system.main.duckdb_types</code>.
     */
    public final DuckdbTypes DUCKDB_TYPES = DuckdbTypes.DUCKDB_TYPES;

    /**
     * The table <code>system.main.duckdb_views</code>.
     */
    public final DuckdbViews DUCKDB_VIEWS = DuckdbViews.DUCKDB_VIEWS;

    /**
     * No further instances allowed
     */
    private Main() {
        super(DSL.name("main"), null, DSL.comment(""));
    }


    @Override
    public Catalog getCatalog() {
        return System.SYSTEM;
    }

    @Override
    public final List<Table<?>> getTables() {
        return Arrays.asList(
            DuckdbColumns.DUCKDB_COLUMNS,
            DuckdbConstraints.DUCKDB_CONSTRAINTS,
            DuckdbDatabases.DUCKDB_DATABASES,
            DuckdbIndexes.DUCKDB_INDEXES,
            DuckdbSchemas.DUCKDB_SCHEMAS,
            DuckdbTables.DUCKDB_TABLES,
            DuckdbTypes.DUCKDB_TYPES,
            DuckdbViews.DUCKDB_VIEWS
        );
    }
}
