batch_mode_batch_schema/
batch_error_details.rs1crate::ix!();
3
4#[derive(Debug,Serialize,Deserialize)]
5pub struct BatchErrorDetails {
6 message: String,
7
8 #[serde(rename = "type")]
9 error_type: ErrorType,
10 param: Option<String>,
11 code: Option<String>,
12}
13
14impl BatchErrorDetails {
15
16 pub fn message(&self) -> &str {
17 &self.message
18 }
19
20 pub fn error_type(&self) -> &ErrorType {
21 &self.error_type
22 }
23
24 pub fn param(&self) -> Option<&str> {
25 self.param.as_ref().map(|x| x.as_str())
26 }
27
28 pub fn code(&self) -> Option<&str> {
29 self.code.as_ref().map(|x| x.as_str())
30 }
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36 use serde_json::json;
37
38 #[test]
39 fn test_error_details_full() {
40 let json_data = json!({
41 "message": "Invalid parameters",
42 "type": "parameter_error",
43 "param": "query",
44 "code": "invalid_query"
45 });
46
47 let error_details: BatchErrorDetails = serde_json::from_value(json_data).unwrap();
48 assert_eq!(error_details.message(), "Invalid parameters");
49 assert_eq!(error_details.error_type(), "parameter_error");
50 assert_eq!(error_details.param(), Some("query"));
51 assert_eq!(error_details.code(), Some("invalid_query"));
52 }
53
54 #[test]
55 fn test_error_details_missing_optional_fields() {
56 let json_data = json!({
57 "message": "Server error",
58 "type": "server_error"
59 });
61
62 let error_details: BatchErrorDetails = serde_json::from_value(json_data).unwrap();
63 assert_eq!(error_details.message(), "Server error");
64 assert_eq!(error_details.error_type(), "server_error");
65 assert_eq!(error_details.param(), None);
66 assert_eq!(error_details.code(), None);
67 }
68}