jacquard_api/app_bsky/feed/
search_posts.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: app.bsky.feed.searchPosts
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    bon::Builder
16)]
17#[builder(start_fn = new)]
18#[serde(rename_all = "camelCase")]
19pub struct SearchPosts<'a> {
20    #[serde(skip_serializing_if = "std::option::Option::is_none")]
21    #[serde(borrow)]
22    pub author: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>,
23    #[serde(skip_serializing_if = "std::option::Option::is_none")]
24    #[serde(borrow)]
25    #[builder(into)]
26    pub cursor: std::option::Option<jacquard_common::CowStr<'a>>,
27    #[serde(skip_serializing_if = "std::option::Option::is_none")]
28    #[serde(borrow)]
29    #[builder(into)]
30    pub domain: std::option::Option<jacquard_common::CowStr<'a>>,
31    #[serde(skip_serializing_if = "std::option::Option::is_none")]
32    pub lang: std::option::Option<jacquard_common::types::string::Language>,
33    ///(default: 25, min: 1, max: 100)
34    #[serde(skip_serializing_if = "std::option::Option::is_none")]
35    pub limit: std::option::Option<i64>,
36    #[serde(skip_serializing_if = "std::option::Option::is_none")]
37    #[serde(borrow)]
38    pub mentions: std::option::Option<jacquard_common::types::ident::AtIdentifier<'a>>,
39    #[serde(borrow)]
40    #[builder(into)]
41    pub q: jacquard_common::CowStr<'a>,
42    #[serde(skip_serializing_if = "std::option::Option::is_none")]
43    #[serde(borrow)]
44    #[builder(into)]
45    pub since: std::option::Option<jacquard_common::CowStr<'a>>,
46    ///(default: "latest")
47    #[serde(skip_serializing_if = "std::option::Option::is_none")]
48    #[serde(borrow)]
49    #[builder(into)]
50    pub sort: std::option::Option<jacquard_common::CowStr<'a>>,
51    #[serde(skip_serializing_if = "std::option::Option::is_none")]
52    #[serde(borrow)]
53    pub tag: std::option::Option<Vec<jacquard_common::CowStr<'a>>>,
54    #[serde(skip_serializing_if = "std::option::Option::is_none")]
55    #[serde(borrow)]
56    #[builder(into)]
57    pub until: std::option::Option<jacquard_common::CowStr<'a>>,
58    #[serde(skip_serializing_if = "std::option::Option::is_none")]
59    #[serde(borrow)]
60    pub url: std::option::Option<jacquard_common::types::string::Uri<'a>>,
61}
62
63impl jacquard_common::IntoStatic for SearchPosts<'_> {
64    type Output = SearchPosts<'static>;
65    fn into_static(self) -> Self::Output {
66        SearchPosts {
67            author: self.author.into_static(),
68            cursor: self.cursor.into_static(),
69            domain: self.domain.into_static(),
70            lang: self.lang.into_static(),
71            limit: self.limit.into_static(),
72            mentions: self.mentions.into_static(),
73            q: self.q.into_static(),
74            since: self.since.into_static(),
75            sort: self.sort.into_static(),
76            tag: self.tag.into_static(),
77            until: self.until.into_static(),
78            url: self.url.into_static(),
79        }
80    }
81}
82
83#[jacquard_derive::lexicon]
84#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
85#[serde(rename_all = "camelCase")]
86pub struct SearchPostsOutput<'a> {
87    #[serde(skip_serializing_if = "std::option::Option::is_none")]
88    #[serde(borrow)]
89    pub cursor: std::option::Option<jacquard_common::CowStr<'a>>,
90    ///Count of search hits. Optional, may be rounded/truncated, and may not be possible to paginate through all hits.
91    #[serde(skip_serializing_if = "std::option::Option::is_none")]
92    pub hits_total: std::option::Option<i64>,
93    #[serde(borrow)]
94    pub posts: Vec<crate::app_bsky::feed::PostView<'a>>,
95}
96
97impl jacquard_common::IntoStatic for SearchPostsOutput<'_> {
98    type Output = SearchPostsOutput<'static>;
99    fn into_static(self) -> Self::Output {
100        SearchPostsOutput {
101            cursor: self.cursor.into_static(),
102            hits_total: self.hits_total.into_static(),
103            posts: self.posts.into_static(),
104            extra_data: self.extra_data.into_static(),
105        }
106    }
107}
108
109#[jacquard_derive::open_union]
110#[derive(
111    serde::Serialize,
112    serde::Deserialize,
113    Debug,
114    Clone,
115    PartialEq,
116    Eq,
117    thiserror::Error,
118    miette::Diagnostic
119)]
120#[serde(tag = "error", content = "message")]
121#[serde(bound(deserialize = "'de: 'a"))]
122pub enum SearchPostsError<'a> {
123    #[serde(rename = "BadQueryString")]
124    BadQueryString(std::option::Option<String>),
125}
126
127impl std::fmt::Display for SearchPostsError<'_> {
128    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
129        match self {
130            Self::BadQueryString(msg) => {
131                write!(f, "BadQueryString")?;
132                if let Some(msg) = msg {
133                    write!(f, ": {}", msg)?;
134                }
135                Ok(())
136            }
137            Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
138        }
139    }
140}
141
142impl jacquard_common::IntoStatic for SearchPostsError<'_> {
143    type Output = SearchPostsError<'static>;
144    fn into_static(self) -> Self::Output {
145        match self {
146            SearchPostsError::BadQueryString(v) => {
147                SearchPostsError::BadQueryString(v.into_static())
148            }
149            SearchPostsError::Unknown(v) => SearchPostsError::Unknown(v.into_static()),
150        }
151    }
152}
153
154impl jacquard_common::types::xrpc::XrpcRequest for SearchPosts<'_> {
155    const NSID: &'static str = "app.bsky.feed.searchPosts";
156    const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query;
157    const OUTPUT_ENCODING: &'static str = "application/json";
158    type Output<'de> = SearchPostsOutput<'de>;
159    type Err<'de> = SearchPostsError<'de>;
160}