1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: tools.smokesignal.blahg.content.post
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[jacquard_derive::lexicon]
9#[derive(
10 serde::Serialize,
11 serde::Deserialize,
12 Debug,
13 Clone,
14 PartialEq,
15 Eq,
16 jacquard_derive::IntoStatic,
17 bon::Builder
18)]
19#[serde(rename_all = "camelCase")]
20pub struct Attachment<'a> {
21 /// Alt text description of the content, for accessibility.
22 #[serde(skip_serializing_if = "std::option::Option::is_none")]
23 #[builder(into)]
24 #[serde(borrow)]
25 pub alt: Option<jacquard_common::CowStr<'a>>,
26 #[serde(borrow)]
27 pub content: jacquard_common::types::blob::Blob<'a>,
28}
29
30/// A blagh post
31#[jacquard_derive::lexicon]
32#[derive(
33 serde::Serialize,
34 serde::Deserialize,
35 Debug,
36 Clone,
37 PartialEq,
38 Eq,
39 jacquard_derive::IntoStatic,
40 bon::Builder
41)]
42#[serde(rename_all = "camelCase")]
43pub struct Post<'a> {
44 #[serde(skip_serializing_if = "std::option::Option::is_none")]
45 #[builder(into)]
46 #[serde(borrow)]
47 pub attachments: Option<
48 Vec<crate::tools_smokesignal::blahg::content::post::Attachment<'a>>,
49 >,
50 /// The content of the post
51 #[serde(skip_serializing_if = "std::option::Option::is_none")]
52 #[builder(into)]
53 #[serde(borrow)]
54 pub content: Option<jacquard_common::types::blob::Blob<'a>>,
55 /// Indicates human language of text content.
56 #[serde(skip_serializing_if = "std::option::Option::is_none")]
57 #[builder(into)]
58 pub langs: Option<Vec<jacquard_common::types::string::Language>>,
59 #[serde(skip_serializing_if = "std::option::Option::is_none")]
60 #[builder(into)]
61 pub published_at: Option<jacquard_common::types::string::Datetime>,
62 #[serde(skip_serializing_if = "std::option::Option::is_none")]
63 #[builder(into)]
64 #[serde(borrow)]
65 pub title: Option<jacquard_common::CowStr<'a>>,
66}
67
68/// Typed wrapper for GetRecord response with this collection's record type.
69#[derive(
70 serde::Serialize,
71 serde::Deserialize,
72 Debug,
73 Clone,
74 PartialEq,
75 Eq,
76 jacquard_derive::IntoStatic
77)]
78#[serde(rename_all = "camelCase")]
79pub struct PostGetRecordOutput<'a> {
80 #[serde(skip_serializing_if = "std::option::Option::is_none")]
81 #[serde(borrow)]
82 pub cid: std::option::Option<jacquard_common::types::string::Cid<'a>>,
83 #[serde(borrow)]
84 pub uri: jacquard_common::types::string::AtUri<'a>,
85 #[serde(borrow)]
86 pub value: Post<'a>,
87}
88
89/// Marker type for deserializing records from this collection.
90pub struct PostRecord;
91impl jacquard_common::xrpc::XrpcResp for PostRecord {
92 const NSID: &'static str = "tools.smokesignal.blahg.content.post";
93 const ENCODING: &'static str = "application/json";
94 type Output<'de> = PostGetRecordOutput<'de>;
95 type Err<'de> = jacquard_common::types::collection::RecordError<'de>;
96}
97
98impl jacquard_common::types::collection::Collection for Post<'_> {
99 const NSID: &'static str = "tools.smokesignal.blahg.content.post";
100 type Record = PostRecord;
101}
102
103impl From<PostGetRecordOutput<'_>> for Post<'_> {
104 fn from(output: PostGetRecordOutput<'_>) -> Self {
105 use jacquard_common::IntoStatic;
106 output.value.into_static()
107 }
108}