Skip to main content

nominal_api/conjure/objects/api/
serializable_error.rs

1/// A SerializableError is a representation of a ServiceException that exists to send error
2/// results to clients as part of a response object when directly throwing an exception is undesirable.
3#[derive(
4    Debug,
5    Clone,
6    conjure_object::serde::Serialize,
7    conjure_object::serde::Deserialize,
8    PartialEq,
9    Eq,
10    PartialOrd,
11    Ord,
12    Hash
13)]
14#[serde(crate = "conjure_object::serde")]
15#[conjure_object::private::staged_builder::staged_builder]
16#[builder(crate = conjure_object::private::staged_builder, update, inline)]
17pub struct SerializableError {
18    #[builder(into)]
19    #[serde(rename = "name")]
20    name: String,
21    #[builder(default, into)]
22    #[serde(rename = "message", skip_serializing_if = "Option::is_none", default)]
23    message: Option<String>,
24    #[builder(into)]
25    #[serde(rename = "errorInstanceId")]
26    error_instance_id: String,
27    #[serde(rename = "statusCode")]
28    status_code: i32,
29    #[builder(default, map(key(type = String, into), value(type = String, into)))]
30    #[serde(
31        rename = "params",
32        skip_serializing_if = "std::collections::BTreeMap::is_empty",
33        default
34    )]
35    params: std::collections::BTreeMap<String, String>,
36}
37impl SerializableError {
38    /// Constructs a new instance of the type.
39    #[inline]
40    pub fn new(
41        name: impl Into<String>,
42        error_instance_id: impl Into<String>,
43        status_code: i32,
44    ) -> Self {
45        Self::builder()
46            .name(name)
47            .error_instance_id(error_instance_id)
48            .status_code(status_code)
49            .build()
50    }
51    #[inline]
52    pub fn name(&self) -> &str {
53        &*self.name
54    }
55    #[inline]
56    pub fn message(&self) -> Option<&str> {
57        self.message.as_ref().map(|o| &**o)
58    }
59    #[inline]
60    pub fn error_instance_id(&self) -> &str {
61        &*self.error_instance_id
62    }
63    #[inline]
64    pub fn status_code(&self) -> i32 {
65        self.status_code
66    }
67    #[inline]
68    pub fn params(&self) -> &std::collections::BTreeMap<String, String> {
69        &self.params
70    }
71}