Skip to main content

jacquard_api/tools_ozone/set/
delete_values.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.ozone.set.deleteValues
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[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    ///Name of the set to delete values from
22    #[serde(borrow)]
23    pub name: CowStr<'a>,
24    ///Array of string values to delete from the set
25    #[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    /// set with the given name does not exist
47    #[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
66/// Response type for tools.ozone.set.deleteValues
67pub 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
83/// Endpoint type for tools.ozone.set.deleteValues
84pub 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    /// State trait tracking which required fields have been set
103    pub trait State: sealed::Sealed {
104        type Values;
105        type Name;
106    }
107    /// Empty state - all required fields are unset
108    pub struct Empty(());
109    impl sealed::Sealed for Empty {}
110    impl State for Empty {
111        type Values = Unset;
112        type Name = Unset;
113    }
114    ///State transition - sets the `values` field to Set
115    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    ///State transition - sets the `name` field to Set
122    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    /// Marker types for field names
129    #[allow(non_camel_case_types)]
130    pub mod members {
131        ///Marker type for the `values` field
132        pub struct values(());
133        ///Marker type for the `name` field
134        pub struct name(());
135    }
136}
137
138/// Builder for constructing an instance of this type
139pub 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    /// Create a new builder for this type
147    pub fn new() -> DeleteValuesBuilder<'a, delete_values_state::Empty> {
148        DeleteValuesBuilder::new()
149    }
150}
151
152impl<'a> DeleteValuesBuilder<'a, delete_values_state::Empty> {
153    /// Create a new builder with all fields unset
154    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    /// Set the `name` field (required)
169    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    /// Set the `values` field (required)
188    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    /// Build the final struct
208    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    /// Build the final struct with custom extra_data
216    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}