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