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 jacquard_derive::IntoStatic
97)]
98#[serde(tag = "error", content = "message")]
99#[serde(bound(deserialize = "'de: 'a"))]
100pub enum SearchPostsError<'a> {
101 #[serde(rename = "BadQueryString")]
102 BadQueryString(std::option::Option<String>),
103}
104
105impl std::fmt::Display for SearchPostsError<'_> {
106 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
107 match self {
108 Self::BadQueryString(msg) => {
109 write!(f, "BadQueryString")?;
110 if let Some(msg) = msg {
111 write!(f, ": {}", msg)?;
112 }
113 Ok(())
114 }
115 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
116 }
117 }
118}
119
120///Response type for
121///app.bsky.feed.searchPosts
122pub struct SearchPostsResponse;
123impl jacquard_common::xrpc::XrpcResp for SearchPostsResponse {
124 const NSID: &'static str = "app.bsky.feed.searchPosts";
125 const ENCODING: &'static str = "application/json";
126 type Output<'de> = SearchPostsOutput<'de>;
127 type Err<'de> = SearchPostsError<'de>;
128}
129
130impl<'a> jacquard_common::xrpc::XrpcRequest for SearchPosts<'a> {
131 const NSID: &'static str = "app.bsky.feed.searchPosts";
132 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
133 type Response = SearchPostsResponse;
134}
135
136///Endpoint type for
137///app.bsky.feed.searchPosts
138pub struct SearchPostsRequest;
139impl jacquard_common::xrpc::XrpcEndpoint for SearchPostsRequest {
140 const PATH: &'static str = "/xrpc/app.bsky.feed.searchPosts";
141 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
142 type Request<'de> = SearchPosts<'de>;
143 type Response = SearchPostsResponse;
144}