jacquard_api/tools_ozone/set/
delete_values.rs1#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13use jacquard_common::CowStr;
14use jacquard_derive::{IntoStatic, lexicon, open_union};
15use serde::{Serialize, Deserialize};
16
17#[lexicon]
18#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
19#[serde(rename_all = "camelCase")]
20pub struct DeleteValues<'a> {
21 #[serde(borrow)]
23 pub name: CowStr<'a>,
24 #[serde(borrow)]
26 pub values: Vec<CowStr<'a>>,
27}
28
29
30#[open_union]
31#[derive(
32 Serialize,
33 Deserialize,
34 Debug,
35 Clone,
36 PartialEq,
37 Eq,
38 thiserror::Error,
39 miette::Diagnostic,
40 IntoStatic
41)]
42
43#[serde(tag = "error", content = "message")]
44#[serde(bound(deserialize = "'de: 'a"))]
45pub enum DeleteValuesError<'a> {
46 #[serde(rename = "SetNotFound")]
48 SetNotFound(Option<CowStr<'a>>),
49}
50
51impl core::fmt::Display for DeleteValuesError<'_> {
52 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
53 match self {
54 Self::SetNotFound(msg) => {
55 write!(f, "SetNotFound")?;
56 if let Some(msg) = msg {
57 write!(f, ": {}", msg)?;
58 }
59 Ok(())
60 }
61 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
62 }
63 }
64}
65
66pub struct DeleteValuesResponse;
68impl jacquard_common::xrpc::XrpcResp for DeleteValuesResponse {
69 const NSID: &'static str = "tools.ozone.set.deleteValues";
70 const ENCODING: &'static str = "application/json";
71 type Output<'de> = ();
72 type Err<'de> = DeleteValuesError<'de>;
73}
74
75impl<'a> jacquard_common::xrpc::XrpcRequest for DeleteValues<'a> {
76 const NSID: &'static str = "tools.ozone.set.deleteValues";
77 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
78 "application/json",
79 );
80 type Response = DeleteValuesResponse;
81}
82
83pub struct DeleteValuesRequest;
85impl jacquard_common::xrpc::XrpcEndpoint for DeleteValuesRequest {
86 const PATH: &'static str = "/xrpc/tools.ozone.set.deleteValues";
87 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
88 "application/json",
89 );
90 type Request<'de> = DeleteValues<'de>;
91 type Response = DeleteValuesResponse;
92}
93
94pub mod delete_values_state {
95
96 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
97 #[allow(unused)]
98 use ::core::marker::PhantomData;
99 mod sealed {
100 pub trait Sealed {}
101 }
102 pub trait State: sealed::Sealed {
104 type Values;
105 type Name;
106 }
107 pub struct Empty(());
109 impl sealed::Sealed for Empty {}
110 impl State for Empty {
111 type Values = Unset;
112 type Name = Unset;
113 }
114 pub struct SetValues<S: State = Empty>(PhantomData<fn() -> S>);
116 impl<S: State> sealed::Sealed for SetValues<S> {}
117 impl<S: State> State for SetValues<S> {
118 type Values = Set<members::values>;
119 type Name = S::Name;
120 }
121 pub struct SetName<S: State = Empty>(PhantomData<fn() -> S>);
123 impl<S: State> sealed::Sealed for SetName<S> {}
124 impl<S: State> State for SetName<S> {
125 type Values = S::Values;
126 type Name = Set<members::name>;
127 }
128 #[allow(non_camel_case_types)]
130 pub mod members {
131 pub struct values(());
133 pub struct name(());
135 }
136}
137
138pub struct DeleteValuesBuilder<'a, S: delete_values_state::State> {
140 _state: PhantomData<fn() -> S>,
141 _fields: (Option<CowStr<'a>>, Option<Vec<CowStr<'a>>>),
142 _lifetime: PhantomData<&'a ()>,
143}
144
145impl<'a> DeleteValues<'a> {
146 pub fn new() -> DeleteValuesBuilder<'a, delete_values_state::Empty> {
148 DeleteValuesBuilder::new()
149 }
150}
151
152impl<'a> DeleteValuesBuilder<'a, delete_values_state::Empty> {
153 pub fn new() -> Self {
155 DeleteValuesBuilder {
156 _state: PhantomData,
157 _fields: (None, None),
158 _lifetime: PhantomData,
159 }
160 }
161}
162
163impl<'a, S> DeleteValuesBuilder<'a, S>
164where
165 S: delete_values_state::State,
166 S::Name: delete_values_state::IsUnset,
167{
168 pub fn name(
170 mut self,
171 value: impl Into<CowStr<'a>>,
172 ) -> DeleteValuesBuilder<'a, delete_values_state::SetName<S>> {
173 self._fields.0 = Option::Some(value.into());
174 DeleteValuesBuilder {
175 _state: PhantomData,
176 _fields: self._fields,
177 _lifetime: PhantomData,
178 }
179 }
180}
181
182impl<'a, S> DeleteValuesBuilder<'a, S>
183where
184 S: delete_values_state::State,
185 S::Values: delete_values_state::IsUnset,
186{
187 pub fn values(
189 mut self,
190 value: impl Into<Vec<CowStr<'a>>>,
191 ) -> DeleteValuesBuilder<'a, delete_values_state::SetValues<S>> {
192 self._fields.1 = Option::Some(value.into());
193 DeleteValuesBuilder {
194 _state: PhantomData,
195 _fields: self._fields,
196 _lifetime: PhantomData,
197 }
198 }
199}
200
201impl<'a, S> DeleteValuesBuilder<'a, S>
202where
203 S: delete_values_state::State,
204 S::Values: delete_values_state::IsSet,
205 S::Name: delete_values_state::IsSet,
206{
207 pub fn build(self) -> DeleteValues<'a> {
209 DeleteValues {
210 name: self._fields.0.unwrap(),
211 values: self._fields.1.unwrap(),
212 extra_data: Default::default(),
213 }
214 }
215 pub fn build_with_data(
217 self,
218 extra_data: BTreeMap<
219 jacquard_common::deps::smol_str::SmolStr,
220 jacquard_common::types::value::Data<'a>,
221 >,
222 ) -> DeleteValues<'a> {
223 DeleteValues {
224 name: self._fields.0.unwrap(),
225 values: self._fields.1.unwrap(),
226 extra_data: Some(extra_data),
227 }
228 }
229}