1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3pub enum Keyword {
4 SELECT,
6 FROM,
7 WHERE,
8 DISTINCT,
9 AS,
10 INSERT,
11 INTO,
12 VALUES,
13 UPDATE,
14 SET,
15 DELETE,
16
17 CREATE,
19 DROP,
20 TABLE,
21 INDEX,
22 IF,
23 NOT,
24 EXISTS,
25 USING,
26 WITH,
27 CONSTRAINT,
28 ON,
29 PRIMARY,
30 KEY,
31 DEFAULT,
32 UNIQUE,
33
34 GROUP,
36 ORDER,
37 BY,
38 HAVING,
39 ASC,
40 DESC,
41 NULLS,
42 FIRST,
43 LAST,
44 LIMIT,
45 OFFSET,
46 ESCAPE,
47
48 TRUE,
50 FALSE,
51 NULL,
52 AND,
53 OR,
54 LIKE,
55 BETWEEN,
56 IN,
57 IS,
58
59 INTEGER,
61 INT,
62 BIGINT,
63 FLOAT,
64 DOUBLE,
65 TEXT,
66 BLOB,
67 BOOLEAN,
68 BOOL,
69 TIMESTAMP,
70 VECTOR,
71 COSINE,
72 L2,
73 INNER,
74 BTREE,
75 HNSW,
76
77 CAST,
79 CASE,
80 WHEN,
81 THEN,
82 ELSE,
83 END,
84 NOW,
85
86 NoKeyword,
88}
89
90impl Keyword {
91 #[allow(clippy::should_implement_trait)]
93 pub fn from_str(input: &str) -> Self {
94 match input.to_ascii_uppercase().as_str() {
95 "SELECT" => Self::SELECT,
96 "FROM" => Self::FROM,
97 "WHERE" => Self::WHERE,
98 "DISTINCT" => Self::DISTINCT,
99 "AS" => Self::AS,
100 "INSERT" => Self::INSERT,
101 "INTO" => Self::INTO,
102 "VALUES" => Self::VALUES,
103 "UPDATE" => Self::UPDATE,
104 "SET" => Self::SET,
105 "DELETE" => Self::DELETE,
106
107 "CREATE" => Self::CREATE,
108 "DROP" => Self::DROP,
109 "TABLE" => Self::TABLE,
110 "INDEX" => Self::INDEX,
111 "IF" => Self::IF,
112 "NOT" => Self::NOT,
113 "EXISTS" => Self::EXISTS,
114 "USING" => Self::USING,
115 "WITH" => Self::WITH,
116 "CONSTRAINT" => Self::CONSTRAINT,
117 "ON" => Self::ON,
118 "PRIMARY" => Self::PRIMARY,
119 "KEY" => Self::KEY,
120 "DEFAULT" => Self::DEFAULT,
121 "UNIQUE" => Self::UNIQUE,
122
123 "GROUP" => Self::GROUP,
124 "ORDER" => Self::ORDER,
125 "BY" => Self::BY,
126 "HAVING" => Self::HAVING,
127 "ASC" => Self::ASC,
128 "DESC" => Self::DESC,
129 "NULLS" => Self::NULLS,
130 "FIRST" => Self::FIRST,
131 "LAST" => Self::LAST,
132 "LIMIT" => Self::LIMIT,
133 "OFFSET" => Self::OFFSET,
134 "ESCAPE" => Self::ESCAPE,
135
136 "TRUE" => Self::TRUE,
137 "FALSE" => Self::FALSE,
138 "NULL" => Self::NULL,
139 "AND" => Self::AND,
140 "OR" => Self::OR,
141 "LIKE" => Self::LIKE,
142 "BETWEEN" => Self::BETWEEN,
143 "IN" => Self::IN,
144 "IS" => Self::IS,
145
146 "INTEGER" => Self::INTEGER,
147 "INT" => Self::INT,
148 "BIGINT" => Self::BIGINT,
149 "FLOAT" => Self::FLOAT,
150 "DOUBLE" => Self::DOUBLE,
151 "TEXT" => Self::TEXT,
152 "BLOB" => Self::BLOB,
153 "BOOLEAN" => Self::BOOLEAN,
154 "BOOL" => Self::BOOL,
155 "TIMESTAMP" => Self::TIMESTAMP,
156 "VECTOR" => Self::VECTOR,
157 "COSINE" => Self::COSINE,
158 "L2" => Self::L2,
159 "INNER" => Self::INNER,
160 "BTREE" => Self::BTREE,
161 "HNSW" => Self::HNSW,
162
163 "CAST" => Self::CAST,
164 "CASE" => Self::CASE,
165 "WHEN" => Self::WHEN,
166 "THEN" => Self::THEN,
167 "ELSE" => Self::ELSE,
168 "END" => Self::END,
169 "NOW" => Self::NOW,
170 _ => Self::NoKeyword,
171 }
172 }
173}