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}"#;