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