spacetimedb_sql_parser/ast/
sql.rsuse super::{Project, SqlExpr, SqlFrom, SqlIdent, SqlLiteral};
pub enum SqlAst {
Query(QueryAst),
Insert(SqlInsert),
Update(SqlUpdate),
Delete(SqlDelete),
Set(SqlSet),
Show(SqlShow),
}
pub struct QueryAst {
pub query: SqlSetOp,
pub order: Vec<OrderByElem>,
pub limit: Option<SqlLiteral>,
}
pub enum SqlSetOp {
Select(SqlSelect),
Query(Box<QueryAst>),
Union(Box<SqlSetOp>, Box<SqlSetOp>, bool),
Minus(Box<SqlSetOp>, Box<SqlSetOp>, bool),
}
pub struct SqlSelect {
pub project: Project,
pub distinct: bool,
pub from: SqlFrom<QueryAst>,
pub filter: Option<SqlExpr>,
}
pub struct OrderByElem(pub SqlExpr, pub bool);
pub struct SqlInsert {
pub table: SqlIdent,
pub fields: Vec<SqlIdent>,
pub values: SqlValues,
}
pub struct SqlValues(pub Vec<Vec<SqlLiteral>>);
pub struct SqlUpdate {
pub table: SqlIdent,
pub assignments: Vec<SqlSet>,
pub filter: Option<SqlExpr>,
}
pub struct SqlDelete {
pub table: SqlIdent,
pub filter: Option<SqlExpr>,
}
pub struct SqlSet(pub SqlIdent, pub SqlLiteral);
pub struct SqlShow(pub SqlIdent);