atproto blogging
1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: sh.weaver.notebook.resolveVersionConflict
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[derive(
9 serde::Serialize,
10 serde::Deserialize,
11 Debug,
12 Clone,
13 PartialEq,
14 Eq,
15 jacquard_derive::IntoStatic
16)]
17#[serde(rename_all = "camelCase")]
18pub struct ResolveVersionConflict<'a> {
19 #[serde(borrow)]
20 pub uris: Vec<jacquard_common::types::string::AtUri<'a>>,
21}
22
23pub mod resolve_version_conflict_state {
24
25 pub use crate::builder_types::{Set, Unset, IsSet, IsUnset};
26 #[allow(unused)]
27 use ::core::marker::PhantomData;
28 mod sealed {
29 pub trait Sealed {}
30 }
31 /// State trait tracking which required fields have been set
32 pub trait State: sealed::Sealed {
33 type Uris;
34 }
35 /// Empty state - all required fields are unset
36 pub struct Empty(());
37 impl sealed::Sealed for Empty {}
38 impl State for Empty {
39 type Uris = Unset;
40 }
41 ///State transition - sets the `uris` field to Set
42 pub struct SetUris<S: State = Empty>(PhantomData<fn() -> S>);
43 impl<S: State> sealed::Sealed for SetUris<S> {}
44 impl<S: State> State for SetUris<S> {
45 type Uris = Set<members::uris>;
46 }
47 /// Marker types for field names
48 #[allow(non_camel_case_types)]
49 pub mod members {
50 ///Marker type for the `uris` field
51 pub struct uris(());
52 }
53}
54
55/// Builder for constructing an instance of this type
56pub struct ResolveVersionConflictBuilder<'a, S: resolve_version_conflict_state::State> {
57 _phantom_state: ::core::marker::PhantomData<fn() -> S>,
58 __unsafe_private_named: (
59 ::core::option::Option<Vec<jacquard_common::types::string::AtUri<'a>>>,
60 ),
61 _phantom: ::core::marker::PhantomData<&'a ()>,
62}
63
64impl<'a> ResolveVersionConflict<'a> {
65 /// Create a new builder for this type
66 pub fn new() -> ResolveVersionConflictBuilder<
67 'a,
68 resolve_version_conflict_state::Empty,
69 > {
70 ResolveVersionConflictBuilder::new()
71 }
72}
73
74impl<'a> ResolveVersionConflictBuilder<'a, resolve_version_conflict_state::Empty> {
75 /// Create a new builder with all fields unset
76 pub fn new() -> Self {
77 ResolveVersionConflictBuilder {
78 _phantom_state: ::core::marker::PhantomData,
79 __unsafe_private_named: (None,),
80 _phantom: ::core::marker::PhantomData,
81 }
82 }
83}
84
85impl<'a, S> ResolveVersionConflictBuilder<'a, S>
86where
87 S: resolve_version_conflict_state::State,
88 S::Uris: resolve_version_conflict_state::IsUnset,
89{
90 /// Set the `uris` field (required)
91 pub fn uris(
92 mut self,
93 value: impl Into<Vec<jacquard_common::types::string::AtUri<'a>>>,
94 ) -> ResolveVersionConflictBuilder<'a, resolve_version_conflict_state::SetUris<S>> {
95 self.__unsafe_private_named.0 = ::core::option::Option::Some(value.into());
96 ResolveVersionConflictBuilder {
97 _phantom_state: ::core::marker::PhantomData,
98 __unsafe_private_named: self.__unsafe_private_named,
99 _phantom: ::core::marker::PhantomData,
100 }
101 }
102}
103
104impl<'a, S> ResolveVersionConflictBuilder<'a, S>
105where
106 S: resolve_version_conflict_state::State,
107 S::Uris: resolve_version_conflict_state::IsSet,
108{
109 /// Build the final struct
110 pub fn build(self) -> ResolveVersionConflict<'a> {
111 ResolveVersionConflict {
112 uris: self.__unsafe_private_named.0.unwrap(),
113 }
114 }
115}
116
117#[jacquard_derive::lexicon]
118#[derive(
119 serde::Serialize,
120 serde::Deserialize,
121 Debug,
122 Clone,
123 PartialEq,
124 Eq,
125 jacquard_derive::IntoStatic
126)]
127#[serde(rename_all = "camelCase")]
128pub struct ResolveVersionConflictOutput<'a> {
129 #[serde(borrow)]
130 pub canonical: crate::sh_weaver::notebook::PublishedVersionView<'a>,
131 #[serde(skip_serializing_if = "std::option::Option::is_none")]
132 #[serde(borrow)]
133 pub collaboration_state: std::option::Option<
134 crate::sh_weaver::collab::CollaborationStateView<'a>,
135 >,
136 #[serde(borrow)]
137 pub related: Vec<crate::sh_weaver::notebook::PublishedVersionView<'a>>,
138}
139
140#[jacquard_derive::open_union]
141#[derive(
142 serde::Serialize,
143 serde::Deserialize,
144 Debug,
145 Clone,
146 PartialEq,
147 Eq,
148 thiserror::Error,
149 miette::Diagnostic,
150 jacquard_derive::IntoStatic
151)]
152#[serde(tag = "error", content = "message")]
153#[serde(bound(deserialize = "'de: 'a"))]
154pub enum ResolveVersionConflictError<'a> {
155 /// The URIs don't appear to be related versions
156 #[serde(rename = "NoRelatedVersions")]
157 NoRelatedVersions(std::option::Option<jacquard_common::CowStr<'a>>),
158}
159
160impl core::fmt::Display for ResolveVersionConflictError<'_> {
161 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
162 match self {
163 Self::NoRelatedVersions(msg) => {
164 write!(f, "NoRelatedVersions")?;
165 if let Some(msg) = msg {
166 write!(f, ": {}", msg)?;
167 }
168 Ok(())
169 }
170 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
171 }
172 }
173}
174
175/// Response type for
176///sh.weaver.notebook.resolveVersionConflict
177pub struct ResolveVersionConflictResponse;
178impl jacquard_common::xrpc::XrpcResp for ResolveVersionConflictResponse {
179 const NSID: &'static str = "sh.weaver.notebook.resolveVersionConflict";
180 const ENCODING: &'static str = "application/json";
181 type Output<'de> = ResolveVersionConflictOutput<'de>;
182 type Err<'de> = ResolveVersionConflictError<'de>;
183}
184
185impl<'a> jacquard_common::xrpc::XrpcRequest for ResolveVersionConflict<'a> {
186 const NSID: &'static str = "sh.weaver.notebook.resolveVersionConflict";
187 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
188 type Response = ResolveVersionConflictResponse;
189}
190
191/// Endpoint type for
192///sh.weaver.notebook.resolveVersionConflict
193pub struct ResolveVersionConflictRequest;
194impl jacquard_common::xrpc::XrpcEndpoint for ResolveVersionConflictRequest {
195 const PATH: &'static str = "/xrpc/sh.weaver.notebook.resolveVersionConflict";
196 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
197 type Request<'de> = ResolveVersionConflict<'de>;
198 type Response = ResolveVersionConflictResponse;
199}