jacquard_api/tools_ozone/communication/
create_template.rs1#[jacquard_derive::lexicon]
9#[derive(
10 serde::Serialize,
11 serde::Deserialize,
12 Debug,
13 Clone,
14 PartialEq,
15 Eq,
16 bon::Builder
17)]
18#[serde(rename_all = "camelCase")]
19#[builder(start_fn = new)]
20pub struct CreateTemplate<'a> {
21 #[serde(borrow)]
23 #[builder(into)]
24 pub content_markdown: jacquard_common::CowStr<'a>,
25 #[serde(skip_serializing_if = "std::option::Option::is_none")]
27 #[serde(borrow)]
28 pub created_by: std::option::Option<jacquard_common::types::string::Did<'a>>,
29 #[serde(skip_serializing_if = "std::option::Option::is_none")]
31 pub lang: std::option::Option<jacquard_common::types::string::Language>,
32 #[serde(borrow)]
34 #[builder(into)]
35 pub name: jacquard_common::CowStr<'a>,
36 #[serde(borrow)]
38 #[builder(into)]
39 pub subject: jacquard_common::CowStr<'a>,
40 #[serde(flatten)]
41 #[serde(borrow)]
42 #[builder(default)]
43 pub extra_data: ::std::collections::BTreeMap<
44 ::jacquard_common::smol_str::SmolStr,
45 ::jacquard_common::types::value::Data<'a>,
46 >,
47}
48
49impl jacquard_common::IntoStatic for CreateTemplate<'_> {
50 type Output = CreateTemplate<'static>;
51 fn into_static(self) -> Self::Output {
52 CreateTemplate {
53 content_markdown: self.content_markdown.into_static(),
54 created_by: self.created_by.into_static(),
55 lang: self.lang.into_static(),
56 name: self.name.into_static(),
57 subject: self.subject.into_static(),
58 extra_data: self.extra_data.into_static(),
59 }
60 }
61}
62
63#[jacquard_derive::lexicon]
64#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
65#[serde(rename_all = "camelCase")]
66pub struct CreateTemplateOutput<'a> {
67 #[serde(flatten)]
68 #[serde(borrow)]
69 pub value: crate::tools_ozone::communication::TemplateView<'a>,
70}
71
72impl jacquard_common::IntoStatic for CreateTemplateOutput<'_> {
73 type Output = CreateTemplateOutput<'static>;
74 fn into_static(self) -> Self::Output {
75 CreateTemplateOutput {
76 value: self.value.into_static(),
77 extra_data: self.extra_data.into_static(),
78 }
79 }
80}
81
82#[jacquard_derive::open_union]
83#[derive(
84 serde::Serialize,
85 serde::Deserialize,
86 Debug,
87 Clone,
88 PartialEq,
89 Eq,
90 thiserror::Error,
91 miette::Diagnostic
92)]
93#[serde(tag = "error", content = "message")]
94#[serde(bound(deserialize = "'de: 'a"))]
95pub enum CreateTemplateError<'a> {
96 #[serde(rename = "DuplicateTemplateName")]
97 DuplicateTemplateName(std::option::Option<String>),
98}
99
100impl std::fmt::Display for CreateTemplateError<'_> {
101 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
102 match self {
103 Self::DuplicateTemplateName(msg) => {
104 write!(f, "DuplicateTemplateName")?;
105 if let Some(msg) = msg {
106 write!(f, ": {}", msg)?;
107 }
108 Ok(())
109 }
110 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
111 }
112 }
113}
114
115impl jacquard_common::IntoStatic for CreateTemplateError<'_> {
116 type Output = CreateTemplateError<'static>;
117 fn into_static(self) -> Self::Output {
118 match self {
119 CreateTemplateError::DuplicateTemplateName(v) => {
120 CreateTemplateError::DuplicateTemplateName(v.into_static())
121 }
122 CreateTemplateError::Unknown(v) => {
123 CreateTemplateError::Unknown(v.into_static())
124 }
125 }
126 }
127}
128
129impl jacquard_common::types::xrpc::XrpcRequest for CreateTemplate<'_> {
130 const NSID: &'static str = "tools.ozone.communication.createTemplate";
131 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure(
132 "application/json",
133 );
134 const OUTPUT_ENCODING: &'static str = "application/json";
135 type Output<'de> = CreateTemplateOutput<'de>;
136 type Err<'de> = CreateTemplateError<'de>;
137}