jacquard_api/com_atproto/sync/
get_record.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: com.atproto.sync.getRecord
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 GetRecord<'a> {
21    #[serde(borrow)]
22    pub collection: jacquard_common::types::string::Nsid<'a>,
23    #[serde(borrow)]
24    pub did: jacquard_common::types::string::Did<'a>,
25    #[serde(borrow)]
26    pub rkey: jacquard_common::types::string::RecordKey<
27        jacquard_common::types::string::Rkey<'a>,
28    >,
29}
30
31#[derive(
32    serde::Serialize,
33    serde::Deserialize,
34    Debug,
35    Clone,
36    PartialEq,
37    Eq,
38    jacquard_derive::IntoStatic
39)]
40#[serde(rename_all = "camelCase")]
41pub struct GetRecordOutput {
42    pub body: bytes::Bytes,
43}
44
45#[jacquard_derive::open_union]
46#[derive(
47    serde::Serialize,
48    serde::Deserialize,
49    Debug,
50    Clone,
51    PartialEq,
52    Eq,
53    thiserror::Error,
54    miette::Diagnostic,
55    jacquard_derive::IntoStatic
56)]
57#[serde(tag = "error", content = "message")]
58#[serde(bound(deserialize = "'de: 'a"))]
59pub enum GetRecordError<'a> {
60    #[serde(rename = "RecordNotFound")]
61    RecordNotFound(std::option::Option<String>),
62    #[serde(rename = "RepoNotFound")]
63    RepoNotFound(std::option::Option<String>),
64    #[serde(rename = "RepoTakendown")]
65    RepoTakendown(std::option::Option<String>),
66    #[serde(rename = "RepoSuspended")]
67    RepoSuspended(std::option::Option<String>),
68    #[serde(rename = "RepoDeactivated")]
69    RepoDeactivated(std::option::Option<String>),
70}
71
72impl std::fmt::Display for GetRecordError<'_> {
73    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
74        match self {
75            Self::RecordNotFound(msg) => {
76                write!(f, "RecordNotFound")?;
77                if let Some(msg) = msg {
78                    write!(f, ": {}", msg)?;
79                }
80                Ok(())
81            }
82            Self::RepoNotFound(msg) => {
83                write!(f, "RepoNotFound")?;
84                if let Some(msg) = msg {
85                    write!(f, ": {}", msg)?;
86                }
87                Ok(())
88            }
89            Self::RepoTakendown(msg) => {
90                write!(f, "RepoTakendown")?;
91                if let Some(msg) = msg {
92                    write!(f, ": {}", msg)?;
93                }
94                Ok(())
95            }
96            Self::RepoSuspended(msg) => {
97                write!(f, "RepoSuspended")?;
98                if let Some(msg) = msg {
99                    write!(f, ": {}", msg)?;
100                }
101                Ok(())
102            }
103            Self::RepoDeactivated(msg) => {
104                write!(f, "RepoDeactivated")?;
105                if let Some(msg) = msg {
106                    write!(f, ": {}", msg)?;
107                }
108                Ok(())
109            }
110            Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
111        }
112    }
113}
114
115/// Response type for
116///com.atproto.sync.getRecord
117pub struct GetRecordResponse;
118impl jacquard_common::xrpc::XrpcResp for GetRecordResponse {
119    const NSID: &'static str = "com.atproto.sync.getRecord";
120    const ENCODING: &'static str = "application/vnd.ipld.car";
121    type Output<'de> = GetRecordOutput;
122    type Err<'de> = GetRecordError<'de>;
123    fn encode_output(
124        output: &Self::Output<'_>,
125    ) -> Result<Vec<u8>, jacquard_common::xrpc::EncodeError> {
126        Ok(output.body.to_vec())
127    }
128    fn decode_output<'de>(
129        body: &'de [u8],
130    ) -> Result<Self::Output<'de>, jacquard_common::error::DecodeError>
131    where
132        Self::Output<'de>: serde::Deserialize<'de>,
133    {
134        Ok(GetRecordOutput {
135            body: bytes::Bytes::copy_from_slice(body),
136        })
137    }
138}
139
140impl<'a> jacquard_common::xrpc::XrpcRequest for GetRecord<'a> {
141    const NSID: &'static str = "com.atproto.sync.getRecord";
142    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
143    type Response = GetRecordResponse;
144}
145
146/// Endpoint type for
147///com.atproto.sync.getRecord
148pub struct GetRecordRequest;
149impl jacquard_common::xrpc::XrpcEndpoint for GetRecordRequest {
150    const PATH: &'static str = "/xrpc/com.atproto.sync.getRecord";
151    const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Query;
152    type Request<'de> = GetRecord<'de>;
153    type Response = GetRecordResponse;
154}