1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5pub enum Action {
6 Get,
8 Set,
10 Del,
12 Add,
14 Gen,
16 Make,
18 Drop,
20 Mod,
22 Over,
24 With,
26 Index,
28 TxnStart,
30 TxnCommit,
31 TxnRollback,
32 Put,
33 DropCol,
34 RenameCol,
35 JsonTable,
38}
39
40impl std::fmt::Display for Action {
41 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
42 match self {
43 Action::Get => write!(f, "GET"),
44 Action::Set => write!(f, "SET"),
45 Action::Del => write!(f, "DEL"),
46 Action::Add => write!(f, "ADD"),
47 Action::Gen => write!(f, "GEN"),
48 Action::Make => write!(f, "MAKE"),
49 Action::Drop => write!(f, "DROP"),
50 Action::Mod => write!(f, "MOD"),
51 Action::Over => write!(f, "OVER"),
52 Action::With => write!(f, "WITH"),
53 Action::Index => write!(f, "INDEX"),
54 Action::TxnStart => write!(f, "TXN_START"),
55 Action::TxnCommit => write!(f, "TXN_COMMIT"),
56 Action::TxnRollback => write!(f, "TXN_ROLLBACK"),
57 Action::Put => write!(f, "PUT"),
58 Action::DropCol => write!(f, "DROP_COL"),
59 Action::RenameCol => write!(f, "RENAME_COL"),
60 Action::JsonTable => write!(f, "JSON_TABLE"),
61 }
62 }
63}
64
65#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
67pub enum LogicalOp {
68 #[default]
69 And,
70 Or,
71}
72
73#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
75pub enum SortOrder {
76 Asc,
77 Desc,
78 AscNullsFirst,
80 AscNullsLast,
82 DescNullsFirst,
84 DescNullsLast,
86}
87
88#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
90pub enum Operator {
91 Eq,
93 Ne,
95 Gt,
97 Gte,
99 Lt,
101 Lte,
103 Fuzzy,
105 In,
107 NotIn,
109 IsNull,
111 IsNotNull,
113 Contains,
115 KeyExists,
117 JsonExists,
119 JsonQuery,
121 JsonValue,
123}
124
125#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
127pub enum AggregateFunc {
128 Count,
129 Sum,
130 Avg,
131 Min,
132 Max,
133}
134
135impl std::fmt::Display for AggregateFunc {
136 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
137 match self {
138 AggregateFunc::Count => write!(f, "COUNT"),
139 AggregateFunc::Sum => write!(f, "SUM"),
140 AggregateFunc::Avg => write!(f, "AVG"),
141 AggregateFunc::Min => write!(f, "MIN"),
142 AggregateFunc::Max => write!(f, "MAX"),
143 }
144 }
145}
146
147#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
149pub enum JoinKind {
150 Inner,
151 Left,
152 Right,
153 Lateral,
155 Full,
157 Cross,
159}
160
161#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
163pub enum SetOp {
164 Union,
166 UnionAll,
168 Intersect,
170 Except,
172}
173
174#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
176pub enum ModKind {
177 Add,
178 Drop,
179}
180
181#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
183pub enum GroupByMode {
184 #[default]
186 Simple,
187 Rollup,
189 Cube,
191}