1pub mod ddl;
2pub mod dml;
3pub mod expr;
4pub mod span;
5
6pub use ddl::*;
7pub use dml::*;
8pub use expr::*;
9use serde::{Deserialize, Serialize};
10pub use span::{Location, Span, Spanned};
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct Statement {
15 pub kind: StatementKind,
16 pub span: Span,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
21#[serde(untagged)]
22pub enum PragmaValue {
23 Int(i64),
25 Text(String),
27}
28
29impl Spanned for Statement {
30 fn span(&self) -> Span {
31 self.span
32 }
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(tag = "variant")]
37#[allow(clippy::large_enum_variant)]
38pub enum StatementKind {
39 CreateTable(CreateTable),
41 DropTable(DropTable),
42 CreateIndex(CreateIndex),
43 DropIndex(DropIndex),
44
45 Pragma {
47 name: String,
49 value: Option<PragmaValue>,
51 },
52
53 Select(Select),
55 Insert(Insert),
56 Update(Update),
57 Delete(Delete),
58}