1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: pub.leaflet.publication
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8/// Record declaring a publication
9#[jacquard_derive::lexicon]
10#[derive(
11 serde::Serialize,
12 serde::Deserialize,
13 Debug,
14 Clone,
15 PartialEq,
16 Eq,
17 jacquard_derive::IntoStatic,
18 bon::Builder
19)]
20#[serde(rename_all = "camelCase")]
21pub struct Publication<'a> {
22 #[serde(skip_serializing_if = "std::option::Option::is_none")]
23 #[builder(into)]
24 #[serde(borrow)]
25 pub base_path: Option<jacquard_common::types::string::Uri<'a>>,
26 #[serde(skip_serializing_if = "std::option::Option::is_none")]
27 #[builder(into)]
28 #[serde(borrow)]
29 pub description: Option<jacquard_common::CowStr<'a>>,
30 #[serde(skip_serializing_if = "std::option::Option::is_none")]
31 #[builder(into)]
32 #[serde(borrow)]
33 pub icon: Option<jacquard_common::types::blob::Blob<'a>>,
34 #[serde(borrow)]
35 #[builder(into)]
36 pub name: jacquard_common::CowStr<'a>,
37 #[serde(skip_serializing_if = "std::option::Option::is_none")]
38 #[builder(into)]
39 #[serde(borrow)]
40 pub preferences: Option<crate::pub_leaflet::publication::Preferences<'a>>,
41 #[serde(skip_serializing_if = "std::option::Option::is_none")]
42 #[builder(into)]
43 #[serde(borrow)]
44 pub theme: Option<crate::pub_leaflet::publication::Theme<'a>>,
45}
46
47/// Typed wrapper for GetRecord response with this collection's record type.
48#[derive(
49 serde::Serialize,
50 serde::Deserialize,
51 Debug,
52 Clone,
53 PartialEq,
54 Eq,
55 jacquard_derive::IntoStatic
56)]
57#[serde(rename_all = "camelCase")]
58pub struct PublicationGetRecordOutput<'a> {
59 #[serde(skip_serializing_if = "std::option::Option::is_none")]
60 #[serde(borrow)]
61 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
62 #[serde(borrow)]
63 pub uri: jacquard_common::types::string::AtUri<'a>,
64 #[serde(borrow)]
65 pub value: Publication<'a>,
66}
67
68/// Marker type for deserializing records from this collection.
69pub struct PublicationRecord;
70impl jacquard_common::xrpc::XrpcResp for PublicationRecord {
71 const NSID: &'static str = "pub.leaflet.publication";
72 const ENCODING: &'static str = "application/json";
73 type Output<'de> = PublicationGetRecordOutput<'de>;
74 type Err<'de> = jacquard_common::types::collection::RecordError<'de>;
75}
76
77impl jacquard_common::types::collection::Collection for Publication<'_> {
78 const NSID: &'static str = "pub.leaflet.publication";
79 type Record = PublicationRecord;
80}
81
82impl From<PublicationGetRecordOutput<'_>> for Publication<'_> {
83 fn from(output: PublicationGetRecordOutput<'_>) -> Self {
84 use jacquard_common::IntoStatic;
85 output.value.into_static()
86 }
87}
88
89#[jacquard_derive::lexicon]
90#[derive(
91 serde::Serialize,
92 serde::Deserialize,
93 Debug,
94 Clone,
95 PartialEq,
96 Eq,
97 jacquard_derive::IntoStatic,
98 Default
99)]
100#[serde(rename_all = "camelCase")]
101pub struct Preferences<'a> {
102 #[serde(skip_serializing_if = "std::option::Option::is_none")]
103 pub show_comments: std::option::Option<bool>,
104 #[serde(skip_serializing_if = "std::option::Option::is_none")]
105 pub show_in_discover: std::option::Option<bool>,
106}
107
108#[jacquard_derive::lexicon]
109#[derive(
110 serde::Serialize,
111 serde::Deserialize,
112 Debug,
113 Clone,
114 PartialEq,
115 Eq,
116 jacquard_derive::IntoStatic,
117 Default
118)]
119#[serde(rename_all = "camelCase")]
120pub struct Theme<'a> {
121 #[serde(skip_serializing_if = "std::option::Option::is_none")]
122 #[serde(borrow)]
123 pub accent_background: std::option::Option<ThemeAccentBackground<'a>>,
124 #[serde(skip_serializing_if = "std::option::Option::is_none")]
125 #[serde(borrow)]
126 pub accent_text: std::option::Option<ThemeAccentText<'a>>,
127 #[serde(skip_serializing_if = "std::option::Option::is_none")]
128 #[serde(borrow)]
129 pub background_color: std::option::Option<ThemeBackgroundColor<'a>>,
130 #[serde(skip_serializing_if = "std::option::Option::is_none")]
131 #[serde(borrow)]
132 pub background_image: std::option::Option<
133 crate::pub_leaflet::theme::background_image::BackgroundImage<'a>,
134 >,
135 #[serde(skip_serializing_if = "std::option::Option::is_none")]
136 #[serde(borrow)]
137 pub page_background: std::option::Option<ThemePageBackground<'a>>,
138 #[serde(skip_serializing_if = "std::option::Option::is_none")]
139 #[serde(borrow)]
140 pub primary: std::option::Option<ThemePrimary<'a>>,
141 #[serde(skip_serializing_if = "std::option::Option::is_none")]
142 pub show_page_background: std::option::Option<bool>,
143}
144
145#[jacquard_derive::open_union]
146#[derive(
147 serde::Serialize,
148 serde::Deserialize,
149 Debug,
150 Clone,
151 PartialEq,
152 Eq,
153 jacquard_derive::IntoStatic
154)]
155#[serde(tag = "$type")]
156#[serde(bound(deserialize = "'de: 'a"))]
157pub enum ThemeAccentBackground<'a> {
158 #[serde(rename = "pub.leaflet.theme.color#rgba")]
159 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>),
160 #[serde(rename = "pub.leaflet.theme.color#rgb")]
161 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>),
162}
163
164#[jacquard_derive::open_union]
165#[derive(
166 serde::Serialize,
167 serde::Deserialize,
168 Debug,
169 Clone,
170 PartialEq,
171 Eq,
172 jacquard_derive::IntoStatic
173)]
174#[serde(tag = "$type")]
175#[serde(bound(deserialize = "'de: 'a"))]
176pub enum ThemeAccentText<'a> {
177 #[serde(rename = "pub.leaflet.theme.color#rgba")]
178 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>),
179 #[serde(rename = "pub.leaflet.theme.color#rgb")]
180 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>),
181}
182
183#[jacquard_derive::open_union]
184#[derive(
185 serde::Serialize,
186 serde::Deserialize,
187 Debug,
188 Clone,
189 PartialEq,
190 Eq,
191 jacquard_derive::IntoStatic
192)]
193#[serde(tag = "$type")]
194#[serde(bound(deserialize = "'de: 'a"))]
195pub enum ThemeBackgroundColor<'a> {
196 #[serde(rename = "pub.leaflet.theme.color#rgba")]
197 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>),
198 #[serde(rename = "pub.leaflet.theme.color#rgb")]
199 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>),
200}
201
202#[jacquard_derive::open_union]
203#[derive(
204 serde::Serialize,
205 serde::Deserialize,
206 Debug,
207 Clone,
208 PartialEq,
209 Eq,
210 jacquard_derive::IntoStatic
211)]
212#[serde(tag = "$type")]
213#[serde(bound(deserialize = "'de: 'a"))]
214pub enum ThemePageBackground<'a> {
215 #[serde(rename = "pub.leaflet.theme.color#rgba")]
216 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>),
217 #[serde(rename = "pub.leaflet.theme.color#rgb")]
218 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>),
219}
220
221#[jacquard_derive::open_union]
222#[derive(
223 serde::Serialize,
224 serde::Deserialize,
225 Debug,
226 Clone,
227 PartialEq,
228 Eq,
229 jacquard_derive::IntoStatic
230)]
231#[serde(tag = "$type")]
232#[serde(bound(deserialize = "'de: 'a"))]
233pub enum ThemePrimary<'a> {
234 #[serde(rename = "pub.leaflet.theme.color#rgba")]
235 ColorRgba(Box<crate::pub_leaflet::theme::color::Rgba<'a>>),
236 #[serde(rename = "pub.leaflet.theme.color#rgb")]
237 ColorRgb(Box<crate::pub_leaflet::theme::color::Rgb<'a>>),
238}