spacetimedb_sql_parser_2/ast/
sql.rs1use super::{Project, SqlExpr, SqlFrom, SqlIdent, SqlLiteral};
2
3pub enum SqlAst {
5 Query(QueryAst),
7 Insert(SqlInsert),
9 Update(SqlUpdate),
11 Delete(SqlDelete),
13 Set(SqlSet),
15 Show(SqlShow),
17}
18
19pub struct QueryAst {
21 pub query: SqlSetOp,
22 pub order: Vec<OrderByElem>,
23 pub limit: Option<SqlLiteral>,
24}
25
26pub enum SqlSetOp {
28 Select(SqlSelect),
30 Query(Box<QueryAst>),
32 Union(Box<SqlSetOp>, Box<SqlSetOp>, bool),
34 Minus(Box<SqlSetOp>, Box<SqlSetOp>, bool),
36}
37
38pub struct SqlSelect {
40 pub project: Project,
41 pub distinct: bool,
42 pub from: SqlFrom<QueryAst>,
43 pub filter: Option<SqlExpr>,
44}
45
46pub struct OrderByElem(pub SqlExpr, pub bool);
48
49pub struct SqlInsert {
51 pub table: SqlIdent,
52 pub fields: Vec<SqlIdent>,
53 pub values: SqlValues,
54}
55
56pub struct SqlValues(pub Vec<Vec<SqlLiteral>>);
58
59pub struct SqlUpdate {
61 pub table: SqlIdent,
62 pub assignments: Vec<SqlSet>,
63 pub filter: Option<SqlExpr>,
64}
65
66pub struct SqlDelete {
68 pub table: SqlIdent,
69 pub filter: Option<SqlExpr>,
70}
71
72pub struct SqlSet(pub SqlIdent, pub SqlLiteral);
74
75pub struct SqlShow(pub SqlIdent);