use sea_query::{Condition, Expr, ExprTrait, Iden, JoinType, Query, SelectStatement};
#[derive(Debug, Default)]
pub struct SchemaQueryBuilder {}
#[derive(Debug, Iden)]
pub enum InformationSchema {
#[iden = "information_schema"]
Schema,
Columns,
CheckConstraints,
KeyColumnUsage,
ReferentialConstraints,
Tables,
TableConstraints,
ConstraintColumnUsage,
}
pub(crate) fn select_base_table_and_view() -> SelectStatement {
#[derive(Debug, Iden)]
enum PgClass {
Table,
Relname,
Relkind,
Oid,
}
#[derive(Debug, Iden)]
enum PgInherits {
Table,
Inhrelid,
}
Query::select()
.column((PgClass::Table, PgClass::Relname))
.from(PgInherits::Table)
.join(
JoinType::Join,
PgClass::Table,
Condition::all()
.add(
Expr::col((PgInherits::Table, PgInherits::Inhrelid))
.equals((PgClass::Table, PgClass::Oid)),
)
.add(
Expr::col((PgClass::Table, PgClass::Relkind))
.is_in(["r", "t", "v", "m", "f", "p"]),
),
)
.to_owned()
}