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 ORDER,
36 BY,
37 ASC,
38 DESC,
39 NULLS,
40 FIRST,
41 LAST,
42 LIMIT,
43 OFFSET,
44 ESCAPE,
45
46 TRUE,
48 FALSE,
49 NULL,
50 AND,
51 OR,
52 LIKE,
53 BETWEEN,
54 IN,
55 IS,
56
57 INTEGER,
59 INT,
60 BIGINT,
61 FLOAT,
62 DOUBLE,
63 TEXT,
64 BLOB,
65 BOOLEAN,
66 BOOL,
67 TIMESTAMP,
68 VECTOR,
69 COSINE,
70 L2,
71 INNER,
72 BTREE,
73 HNSW,
74
75 CAST,
77 CASE,
78 WHEN,
79 THEN,
80 ELSE,
81 END,
82 NOW,
83
84 NoKeyword,
86}
87
88impl Keyword {
89 #[allow(clippy::should_implement_trait)]
91 pub fn from_str(input: &str) -> Self {
92 match input.to_ascii_uppercase().as_str() {
93 "SELECT" => Self::SELECT,
94 "FROM" => Self::FROM,
95 "WHERE" => Self::WHERE,
96 "DISTINCT" => Self::DISTINCT,
97 "AS" => Self::AS,
98 "INSERT" => Self::INSERT,
99 "INTO" => Self::INTO,
100 "VALUES" => Self::VALUES,
101 "UPDATE" => Self::UPDATE,
102 "SET" => Self::SET,
103 "DELETE" => Self::DELETE,
104
105 "CREATE" => Self::CREATE,
106 "DROP" => Self::DROP,
107 "TABLE" => Self::TABLE,
108 "INDEX" => Self::INDEX,
109 "IF" => Self::IF,
110 "NOT" => Self::NOT,
111 "EXISTS" => Self::EXISTS,
112 "USING" => Self::USING,
113 "WITH" => Self::WITH,
114 "CONSTRAINT" => Self::CONSTRAINT,
115 "ON" => Self::ON,
116 "PRIMARY" => Self::PRIMARY,
117 "KEY" => Self::KEY,
118 "DEFAULT" => Self::DEFAULT,
119 "UNIQUE" => Self::UNIQUE,
120
121 "ORDER" => Self::ORDER,
122 "BY" => Self::BY,
123 "ASC" => Self::ASC,
124 "DESC" => Self::DESC,
125 "NULLS" => Self::NULLS,
126 "FIRST" => Self::FIRST,
127 "LAST" => Self::LAST,
128 "LIMIT" => Self::LIMIT,
129 "OFFSET" => Self::OFFSET,
130 "ESCAPE" => Self::ESCAPE,
131
132 "TRUE" => Self::TRUE,
133 "FALSE" => Self::FALSE,
134 "NULL" => Self::NULL,
135 "AND" => Self::AND,
136 "OR" => Self::OR,
137 "LIKE" => Self::LIKE,
138 "BETWEEN" => Self::BETWEEN,
139 "IN" => Self::IN,
140 "IS" => Self::IS,
141
142 "INTEGER" => Self::INTEGER,
143 "INT" => Self::INT,
144 "BIGINT" => Self::BIGINT,
145 "FLOAT" => Self::FLOAT,
146 "DOUBLE" => Self::DOUBLE,
147 "TEXT" => Self::TEXT,
148 "BLOB" => Self::BLOB,
149 "BOOLEAN" => Self::BOOLEAN,
150 "BOOL" => Self::BOOL,
151 "TIMESTAMP" => Self::TIMESTAMP,
152 "VECTOR" => Self::VECTOR,
153 "COSINE" => Self::COSINE,
154 "L2" => Self::L2,
155 "INNER" => Self::INNER,
156 "BTREE" => Self::BTREE,
157 "HNSW" => Self::HNSW,
158
159 "CAST" => Self::CAST,
160 "CASE" => Self::CASE,
161 "WHEN" => Self::WHEN,
162 "THEN" => Self::THEN,
163 "ELSE" => Self::ELSE,
164 "END" => Self::END,
165 "NOW" => Self::NOW,
166 _ => Self::NoKeyword,
167 }
168 }
169}