etptypes/energistics/etp/v12/protocol/data_array/get_data_array_metadata_response.rs
1// SPDX-FileCopyrightText: 2023 Geosiris
2// SPDX-License-Identifier: Apache-2.0 OR MIT
3#![allow(unused_imports)]
4#![allow(non_camel_case_types)]
5use crate::helpers::*;
6use apache_avro::{Error, Schema};
7use bytes;
8use derivative::Derivative;
9use std::collections::HashMap;
10use std::time::SystemTime;
11
12use crate::energistics::etp::v12::datatypes::data_array_types::data_array_metadata::DataArrayMetadata;
13use crate::helpers::ETPMetadata;
14use crate::helpers::Schemable;
15use crate::protocols::ProtocolMessage;
16use apache_avro::{from_avro_datum, from_value, AvroResult};
17use std::io::Read;
18
19#[derive(Debug, PartialEq, Clone, serde::Deserialize, serde::Serialize, Derivative)]
20#[serde(rename_all = "PascalCase")]
21pub struct GetDataArrayMetadataResponse {
22 #[serde(rename = "arrayMetadata")]
23 #[derivative(Default(value = "HashMap::new()"))]
24 pub array_metadata: HashMap<String, DataArrayMetadata>,
25}
26
27fn getdataarraymetadataresponse_avro_schema() -> Option<Schema> {
28 match Schema::parse_str(AVRO_SCHEMA) {
29 Ok(result) => Some(result),
30 Err(e) => {
31 panic!("{:?}", e);
32 }
33 }
34}
35
36impl Schemable for GetDataArrayMetadataResponse {
37 fn avro_schema(&self) -> Option<Schema> {
38 getdataarraymetadataresponse_avro_schema()
39 }
40 fn avro_schema_str(&self) -> &'static str {
41 AVRO_SCHEMA
42 }
43}
44
45impl AvroSerializable for GetDataArrayMetadataResponse {}
46
47impl AvroDeserializable for GetDataArrayMetadataResponse {
48 fn avro_deserialize<R: Read>(input: &mut R) -> AvroResult<GetDataArrayMetadataResponse> {
49 let record = from_avro_datum(
50 &getdataarraymetadataresponse_avro_schema().unwrap(),
51 input,
52 None,
53 )
54 .unwrap();
55 from_value::<GetDataArrayMetadataResponse>(&record)
56 }
57}
58
59impl ETPMetadata for GetDataArrayMetadataResponse {
60 fn protocol(&self) -> i32 {
61 9
62 }
63 fn message_type(&self) -> i32 {
64 7
65 }
66 fn sender_role(&self) -> Vec<Role> {
67 vec![Role::Store]
68 }
69 fn protocol_roles(&self) -> Vec<Role> {
70 vec![Role::Store, Role::Customer]
71 }
72 fn multipart_flag(&self) -> bool {
73 true
74 }
75}
76
77impl GetDataArrayMetadataResponse {
78 pub fn as_protocol_message(&self) -> ProtocolMessage {
79 ProtocolMessage::DataArray_GetDataArrayMetadataResponse(self.clone())
80 }
81}
82
83impl Default for GetDataArrayMetadataResponse {
84 /* Protocol 9, MessageType : 7 */
85 fn default() -> GetDataArrayMetadataResponse {
86 GetDataArrayMetadataResponse {
87 array_metadata: HashMap::new(),
88 }
89 }
90}
91
92pub static AVRO_SCHEMA: &'static str = r#"{
93 "type": "record",
94 "namespace": "Energistics.Etp.v12.Protocol.DataArray",
95 "name": "GetDataArrayMetadataResponse",
96 "protocol": "9",
97 "messageType": "7",
98 "senderRole": "store",
99 "protocolRoles": "store,customer",
100 "multipartFlag": true,
101 "fields": [
102 {
103 "name": "arrayMetadata",
104 "type": {
105 "type": "map",
106 "values": {
107 "type": "record",
108 "namespace": "Energistics.Etp.v12.Datatypes.DataArrayTypes",
109 "name": "DataArrayMetadata",
110 "fields": [
111 {
112 "name": "dimensions",
113 "type": {
114 "type": "array",
115 "items": "long"
116 }
117 },
118 {
119 "name": "preferredSubarrayDimensions",
120 "type": {
121 "type": "array",
122 "items": "long"
123 },
124 "default": []
125 },
126 {
127 "name": "transportArrayType",
128 "type": {
129 "type": "enum",
130 "namespace": "Energistics.Etp.v12.Datatypes",
131 "name": "AnyArrayType",
132 "symbols": [
133 "arrayOfBoolean",
134 "arrayOfInt",
135 "arrayOfLong",
136 "arrayOfFloat",
137 "arrayOfDouble",
138 "arrayOfString",
139 "bytes"
140 ],
141 "fullName": "Energistics.Etp.v12.Datatypes.AnyArrayType",
142 "depends": []
143 }
144 },
145 {
146 "name": "logicalArrayType",
147 "type": {
148 "type": "enum",
149 "namespace": "Energistics.Etp.v12.Datatypes",
150 "name": "AnyLogicalArrayType",
151 "symbols": [
152 "arrayOfBoolean",
153 "arrayOfInt8",
154 "arrayOfUInt8",
155 "arrayOfInt16LE",
156 "arrayOfInt32LE",
157 "arrayOfInt64LE",
158 "arrayOfUInt16LE",
159 "arrayOfUInt32LE",
160 "arrayOfUInt64LE",
161 "arrayOfFloat32LE",
162 "arrayOfDouble64LE",
163 "arrayOfInt16BE",
164 "arrayOfInt32BE",
165 "arrayOfInt64BE",
166 "arrayOfUInt16BE",
167 "arrayOfUInt32BE",
168 "arrayOfUInt64BE",
169 "arrayOfFloat32BE",
170 "arrayOfDouble64BE",
171 "arrayOfString",
172 "arrayOfCustom"
173 ],
174 "fullName": "Energistics.Etp.v12.Datatypes.AnyLogicalArrayType",
175 "depends": []
176 }
177 },
178 {
179 "name": "storeLastWrite",
180 "type": "long"
181 },
182 {
183 "name": "storeCreated",
184 "type": "long"
185 },
186 {
187 "name": "customData",
188 "type": {
189 "type": "map",
190 "values": {
191 "type": "record",
192 "namespace": "Energistics.Etp.v12.Datatypes",
193 "name": "DataValue",
194 "fields": [
195 {
196 "name": "item",
197 "type": [
198 "null",
199 "boolean",
200 "int",
201 "long",
202 "float",
203 "double",
204 "string",
205 {
206 "type": "record",
207 "namespace": "Energistics.Etp.v12.Datatypes",
208 "name": "ArrayOfBoolean",
209 "fields": [
210 {
211 "name": "values",
212 "type": {
213 "type": "array",
214 "items": "boolean"
215 }
216 }
217 ],
218 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
219 "depends": []
220 },
221 {
222 "type": "record",
223 "namespace": "Energistics.Etp.v12.Datatypes",
224 "name": "ArrayOfNullableBoolean",
225 "fields": [
226 {
227 "name": "values",
228 "type": {
229 "type": "array",
230 "items": [
231 "null",
232 "boolean"
233 ]
234 }
235 }
236 ],
237 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfNullableBoolean",
238 "depends": []
239 },
240 {
241 "type": "record",
242 "namespace": "Energistics.Etp.v12.Datatypes",
243 "name": "ArrayOfInt",
244 "fields": [
245 {
246 "name": "values",
247 "type": {
248 "type": "array",
249 "items": "int"
250 }
251 }
252 ],
253 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfInt",
254 "depends": []
255 },
256 {
257 "type": "record",
258 "namespace": "Energistics.Etp.v12.Datatypes",
259 "name": "ArrayOfNullableInt",
260 "fields": [
261 {
262 "name": "values",
263 "type": {
264 "type": "array",
265 "items": [
266 "null",
267 "int"
268 ]
269 }
270 }
271 ],
272 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfNullableInt",
273 "depends": []
274 },
275 {
276 "type": "record",
277 "namespace": "Energistics.Etp.v12.Datatypes",
278 "name": "ArrayOfLong",
279 "fields": [
280 {
281 "name": "values",
282 "type": {
283 "type": "array",
284 "items": "long"
285 }
286 }
287 ],
288 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfLong",
289 "depends": []
290 },
291 {
292 "type": "record",
293 "namespace": "Energistics.Etp.v12.Datatypes",
294 "name": "ArrayOfNullableLong",
295 "fields": [
296 {
297 "name": "values",
298 "type": {
299 "type": "array",
300 "items": [
301 "null",
302 "long"
303 ]
304 }
305 }
306 ],
307 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfNullableLong",
308 "depends": []
309 },
310 {
311 "type": "record",
312 "namespace": "Energistics.Etp.v12.Datatypes",
313 "name": "ArrayOfFloat",
314 "fields": [
315 {
316 "name": "values",
317 "type": {
318 "type": "array",
319 "items": "float"
320 }
321 }
322 ],
323 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
324 "depends": []
325 },
326 {
327 "type": "record",
328 "namespace": "Energistics.Etp.v12.Datatypes",
329 "name": "ArrayOfDouble",
330 "fields": [
331 {
332 "name": "values",
333 "type": {
334 "type": "array",
335 "items": "double"
336 }
337 }
338 ],
339 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
340 "depends": []
341 },
342 {
343 "type": "record",
344 "namespace": "Energistics.Etp.v12.Datatypes",
345 "name": "ArrayOfString",
346 "fields": [
347 {
348 "name": "values",
349 "type": {
350 "type": "array",
351 "items": "string"
352 }
353 }
354 ],
355 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfString",
356 "depends": []
357 },
358 {
359 "type": "record",
360 "namespace": "Energistics.Etp.v12.Datatypes",
361 "name": "ArrayOfBytes",
362 "fields": [
363 {
364 "name": "values",
365 "type": {
366 "type": "array",
367 "items": "bytes"
368 }
369 }
370 ],
371 "fullName": "Energistics.Etp.v12.Datatypes.ArrayOfBytes",
372 "depends": []
373 },
374 "bytes",
375 {
376 "type": "record",
377 "namespace": "Energistics.Etp.v12.Datatypes",
378 "name": "AnySparseArray",
379 "fields": [
380 {
381 "name": "slices",
382 "type": {
383 "type": "array",
384 "items": {
385 "type": "record",
386 "namespace": "Energistics.Etp.v12.Datatypes",
387 "name": "AnySubarray",
388 "fields": [
389 {
390 "name": "start",
391 "type": "long"
392 },
393 {
394 "name": "slice",
395 "type": {
396 "type": "record",
397 "namespace": "Energistics.Etp.v12.Datatypes",
398 "name": "AnyArray",
399 "fields": [
400 {
401 "name": "item",
402 "type": [
403 "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
404 "Energistics.Etp.v12.Datatypes.ArrayOfInt",
405 "Energistics.Etp.v12.Datatypes.ArrayOfLong",
406 "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
407 "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
408 "Energistics.Etp.v12.Datatypes.ArrayOfString",
409 "bytes"
410 ]
411 }
412 ],
413 "fullName": "Energistics.Etp.v12.Datatypes.AnyArray",
414 "depends": [
415 "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
416 "Energistics.Etp.v12.Datatypes.ArrayOfInt",
417 "Energistics.Etp.v12.Datatypes.ArrayOfLong",
418 "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
419 "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
420 "Energistics.Etp.v12.Datatypes.ArrayOfString"
421 ]
422 }
423 }
424 ],
425 "fullName": "Energistics.Etp.v12.Datatypes.AnySubarray",
426 "depends": [
427 "Energistics.Etp.v12.Datatypes.AnyArray"
428 ]
429 }
430 }
431 }
432 ],
433 "fullName": "Energistics.Etp.v12.Datatypes.AnySparseArray",
434 "depends": [
435 "Energistics.Etp.v12.Datatypes.AnySubarray"
436 ]
437 }
438 ]
439 }
440 ],
441 "fullName": "Energistics.Etp.v12.Datatypes.DataValue",
442 "depends": [
443 "Energistics.Etp.v12.Datatypes.ArrayOfBoolean",
444 "Energistics.Etp.v12.Datatypes.ArrayOfNullableBoolean",
445 "Energistics.Etp.v12.Datatypes.ArrayOfInt",
446 "Energistics.Etp.v12.Datatypes.ArrayOfNullableInt",
447 "Energistics.Etp.v12.Datatypes.ArrayOfLong",
448 "Energistics.Etp.v12.Datatypes.ArrayOfNullableLong",
449 "Energistics.Etp.v12.Datatypes.ArrayOfFloat",
450 "Energistics.Etp.v12.Datatypes.ArrayOfDouble",
451 "Energistics.Etp.v12.Datatypes.ArrayOfString",
452 "Energistics.Etp.v12.Datatypes.ArrayOfBytes",
453 "Energistics.Etp.v12.Datatypes.AnySparseArray"
454 ]
455 }
456 },
457 "default": {}
458 }
459 ],
460 "fullName": "Energistics.Etp.v12.Datatypes.DataArrayTypes.DataArrayMetadata",
461 "depends": [
462 "Energistics.Etp.v12.Datatypes.AnyArrayType",
463 "Energistics.Etp.v12.Datatypes.AnyLogicalArrayType",
464 "Energistics.Etp.v12.Datatypes.DataValue"
465 ]
466 }
467 },
468 "default": {}
469 }
470 ],
471 "fullName": "Energistics.Etp.v12.Protocol.DataArray.GetDataArrayMetadataResponse",
472 "depends": [
473 "Energistics.Etp.v12.Datatypes.DataArrayTypes.DataArrayMetadata"
474 ]
475}"#;