mochow_sdk_rust/mochow/api/
enums.rs1use serde::{Deserialize, Serialize};
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub enum AutoBuildPolicyType {
19 #[serde(rename = "TIMING", alias = "timing")]
20 TIMING,
21 #[serde(rename = "PERIODICAL", alias = "periodical")]
22 PERIODICAL,
23 #[serde(rename = "ROW_COUNT_INCREMENT", alias = "row_count_increment")]
24 ROW_COUNT_INCREMENT,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub enum FieldType {
29 #[serde(rename = "BOOL")]
30 BOOL,
31 #[serde(rename = "INT8")]
32 INT8,
33 #[serde(rename = "UINT8")]
34 UINT8,
35 #[serde(rename = "INT16")]
36 Int16,
37 #[serde(rename = "UINT16")]
38 Uint16,
39 #[serde(rename = "INT32")]
40 INT32,
41 #[serde(rename = "UINT32")]
42 UINT32,
43 #[serde(rename = "INT64")]
44 INT64,
45 #[serde(rename = "UINT64")]
46 UINT64,
47 #[serde(rename = "FLOAT")]
48 FLOAT,
49 #[serde(rename = "DOUBLE")]
50 DOUBLE,
51 #[serde(rename = "DATE")]
52 DATE,
53 #[serde(rename = "DATETIME")]
54 DATETIME,
55 #[serde(rename = "TIMESTAMP")]
56 TIMESTAMP,
57 #[serde(rename = "STRING")]
58 STRING,
59 #[serde(rename = "BINARY")]
60 BINARY,
61 #[serde(rename = "UUID")]
62 UUID,
63 #[serde(rename = "TEXT")]
64 TEXT,
65 #[serde(rename = "TEXT_GBK")]
66 TEXT_GBK,
67 #[serde(rename = "TEXT_GB18030")]
68 TEXT_GB18030,
69 #[serde(rename = "FLOAT_VECTOR")]
70 FLOAT_VECTOR,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize)]
74pub enum IndexState {
75 #[serde(rename = "INVALID")]
76 INVALID,
77 #[serde(rename = "BUILDING")]
78 BUILDING,
79 #[serde(rename = "NORMAL")]
80 NORMAL,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
84pub enum TableState {
85 #[serde(rename = "INVALID")]
86 INVALID,
87 #[serde(rename = "CREATING")]
88 CREATING,
89 #[serde(rename = "NORMAL")]
90 NORMAL,
91 #[serde(rename = "DELETING")]
92 DELETING,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
96pub enum IndexType {
97 #[serde(rename = "FLAT")]
98 FLAT,
99 #[serde(rename = "HNSW")]
100 HNSW,
101 #[serde(rename = "HNSWPQ")]
102 HNSWPQ,
103 #[serde(rename = "PUCK")]
104 PUCK,
105 #[serde(rename = "SECONDARY")]
106 SECONDARY_INDEX,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
110pub enum MetricType {
111 #[serde(rename = "L2")]
112 L2,
113 #[serde(rename = "IP")]
114 IP,
115 #[serde(rename = "COSINE")]
116 COSINE,
117}
118
119#[derive(Debug, Clone, Default, Serialize, Deserialize)]
120pub enum PartitionType {
121 #[default]
122 #[serde(rename = "HASH")]
123 HASH,
124}
125
126#[derive(Debug, Clone, Default, Serialize, Deserialize)]
127pub enum ReadConsistency {
128 #[default]
129 #[serde(rename = "EVENTUAL")]
130 EVENTUAL,
131 #[serde(rename = "STRONG")]
132 STRONG,
133}
134
135#[derive(Debug, Clone, Serialize, Deserialize)]
136pub enum ServerErrorCode {
137 UNKNOWN,
138 INTERNAL_ERROR = 1,
139 INVALID_PARAMETER = 2,
140 INVALID_HTTP_URL = 10,
141 INVALID_HTTP_HEADER = 11,
142 INVALID_HTTP_BODY = 12,
143 MISS_SSL_CERTIFICATES = 13,
144
145 USER_NOT_EXIST = 20,
146 USER_ALREADY_EXIST = 21,
147 ROLE_NOT_EXIST = 22,
148 ROLE_ALREADY_EXIST = 23,
149 AUTHENTICATION_FAILED = 24,
150 PERMISSION_DENIED = 25,
151
152 DB_NOT_EXIST = 50,
153 DB_ALREADY_EXIST = 51,
154 DB_TOO_MANY_TABLES = 52,
155 DB_NOT_EMPTY = 53,
156
157 INVALID_TABLE_SCHEMA = 60,
158 INVALID_PARTITION_PARAMETERS = 61,
159 TABLE_TOO_MANY_FIELDS = 62,
160 TABLE_TOO_MANY_FAMILIES = 63,
161 TABLE_TOO_MANY_PRIMARY_KEYS = 64,
162 TABLE_TOO_MANY_PARTITION_KEYS = 65,
163 TABLE_TOO_MANY_VECTOR_FIELDS = 66,
164 TABLE_TOO_MANY_INDEXES = 67,
165 DYNAMIC_SCHEMA_ERROR = 68,
166 TABLE_NOT_EXIST = 69,
167 TABLE_ALREADY_EXIST = 70,
168 INVALID_TABLE_STATE = 71,
169 TABLE_NOT_READY = 72,
170 ALIAS_NOT_EXIST = 73,
171 ALIAS_ALREADY_EXIST = 74,
172
173 FIELD_NOT_EXIST = 80,
174 FIELD_ALREADY_EXIST = 81,
175 VECTOR_FIELD_NOT_EXIST = 82,
176
177 INVALID_INDEX_SCHEMA = 90,
178 INDEX_NOT_EXIST = 91,
179 INDEX_ALREADY_EXIST = 92,
180 INDEX_DUPLICATED = 93,
181 INVALID_INDEX_STATE = 94,
182
183 PRIMARY_KEY_DUPLICATED = 100,
184 ROW_KEY_NOT_FOUND = 101,
185}
186
187impl From<i32> for ServerErrorCode {
188 fn from(value: i32) -> Self {
189 match value {
190 1 => ServerErrorCode::INTERNAL_ERROR,
191 2 => ServerErrorCode::INVALID_PARAMETER,
192 10 => ServerErrorCode::INVALID_HTTP_URL,
193 11 => ServerErrorCode::INVALID_HTTP_HEADER,
194 12 => ServerErrorCode::INVALID_HTTP_BODY,
195 13 => ServerErrorCode::MISS_SSL_CERTIFICATES,
196 20 => ServerErrorCode::USER_NOT_EXIST,
197 21 => ServerErrorCode::USER_ALREADY_EXIST,
198 22 => ServerErrorCode::ROLE_NOT_EXIST,
199 23 => ServerErrorCode::ROLE_ALREADY_EXIST,
200 24 => ServerErrorCode::AUTHENTICATION_FAILED,
201 25 => ServerErrorCode::PERMISSION_DENIED,
202 50 => ServerErrorCode::DB_NOT_EXIST,
203 51 => ServerErrorCode::DB_ALREADY_EXIST,
204 52 => ServerErrorCode::DB_TOO_MANY_TABLES,
205 53 => ServerErrorCode::DB_NOT_EMPTY,
206 60 => ServerErrorCode::INVALID_TABLE_SCHEMA,
207 61 => ServerErrorCode::INVALID_PARTITION_PARAMETERS,
208 62 => ServerErrorCode::TABLE_TOO_MANY_FIELDS,
209 63 => ServerErrorCode::TABLE_TOO_MANY_FAMILIES,
210 64 => ServerErrorCode::TABLE_TOO_MANY_PRIMARY_KEYS,
211 65 => ServerErrorCode::TABLE_TOO_MANY_PARTITION_KEYS,
212 66 => ServerErrorCode::TABLE_TOO_MANY_VECTOR_FIELDS,
213 67 => ServerErrorCode::TABLE_TOO_MANY_INDEXES,
214 68 => ServerErrorCode::DYNAMIC_SCHEMA_ERROR,
215 69 => ServerErrorCode::TABLE_NOT_EXIST,
216 70 => ServerErrorCode::TABLE_ALREADY_EXIST,
217 71 => ServerErrorCode::INVALID_TABLE_STATE,
218 72 => ServerErrorCode::TABLE_NOT_READY,
219 73 => ServerErrorCode::ALIAS_NOT_EXIST,
220 74 => ServerErrorCode::ALIAS_ALREADY_EXIST,
221 80 => ServerErrorCode::FIELD_NOT_EXIST,
222 81 => ServerErrorCode::FIELD_ALREADY_EXIST,
223 82 => ServerErrorCode::VECTOR_FIELD_NOT_EXIST,
224 90 => ServerErrorCode::INVALID_INDEX_SCHEMA,
225 91 => ServerErrorCode::INDEX_NOT_EXIST,
226 92 => ServerErrorCode::INDEX_ALREADY_EXIST,
227 93 => ServerErrorCode::INDEX_DUPLICATED,
228 94 => ServerErrorCode::INVALID_INDEX_STATE,
229 100 => ServerErrorCode::PRIMARY_KEY_DUPLICATED,
230 101 => ServerErrorCode::ROW_KEY_NOT_FOUND,
231 _ => ServerErrorCode::UNKNOWN,
232 }
233 }
234}
235
236#[cfg(test)]
237mod tests {
238
239 #[test]
240 fn test_serialize() {
241 let p = super::AutoBuildPolicyType::TIMING;
242
243 let s = serde_json::to_string(&p).unwrap();
244
245 assert_eq!(s, "\"TIMING\"");
246 }
247}