1#[derive(Clone, Debug)]
17#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
18pub struct TransferReversal {
19 pub amount: i64,
21 pub balance_transaction: Option<stripe_types::Expandable<stripe_shared::BalanceTransaction>>,
23 pub created: stripe_types::Timestamp,
25 pub currency: stripe_types::Currency,
28 pub destination_payment_refund: Option<stripe_types::Expandable<stripe_shared::Refund>>,
30 pub id: stripe_shared::TransferReversalId,
32 pub metadata: Option<std::collections::HashMap<String, String>>,
35 pub source_refund: Option<stripe_types::Expandable<stripe_shared::Refund>>,
37 pub transfer: stripe_types::Expandable<stripe_shared::Transfer>,
39}
40#[doc(hidden)]
41pub struct TransferReversalBuilder {
42 amount: Option<i64>,
43 balance_transaction:
44 Option<Option<stripe_types::Expandable<stripe_shared::BalanceTransaction>>>,
45 created: Option<stripe_types::Timestamp>,
46 currency: Option<stripe_types::Currency>,
47 destination_payment_refund: Option<Option<stripe_types::Expandable<stripe_shared::Refund>>>,
48 id: Option<stripe_shared::TransferReversalId>,
49 metadata: Option<Option<std::collections::HashMap<String, String>>>,
50 source_refund: Option<Option<stripe_types::Expandable<stripe_shared::Refund>>>,
51 transfer: Option<stripe_types::Expandable<stripe_shared::Transfer>>,
52}
53
54#[allow(
55 unused_variables,
56 irrefutable_let_patterns,
57 clippy::let_unit_value,
58 clippy::match_single_binding,
59 clippy::single_match
60)]
61const _: () = {
62 use miniserde::de::{Map, Visitor};
63 use miniserde::json::Value;
64 use miniserde::{Deserialize, Result, make_place};
65 use stripe_types::miniserde_helpers::FromValueOpt;
66 use stripe_types::{MapBuilder, ObjectDeser};
67
68 make_place!(Place);
69
70 impl Deserialize for TransferReversal {
71 fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
72 Place::new(out)
73 }
74 }
75
76 struct Builder<'a> {
77 out: &'a mut Option<TransferReversal>,
78 builder: TransferReversalBuilder,
79 }
80
81 impl Visitor for Place<TransferReversal> {
82 fn map(&mut self) -> Result<Box<dyn Map + '_>> {
83 Ok(Box::new(Builder {
84 out: &mut self.out,
85 builder: TransferReversalBuilder::deser_default(),
86 }))
87 }
88 }
89
90 impl MapBuilder for TransferReversalBuilder {
91 type Out = TransferReversal;
92 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
93 Ok(match k {
94 "amount" => Deserialize::begin(&mut self.amount),
95 "balance_transaction" => Deserialize::begin(&mut self.balance_transaction),
96 "created" => Deserialize::begin(&mut self.created),
97 "currency" => Deserialize::begin(&mut self.currency),
98 "destination_payment_refund" => {
99 Deserialize::begin(&mut self.destination_payment_refund)
100 }
101 "id" => Deserialize::begin(&mut self.id),
102 "metadata" => Deserialize::begin(&mut self.metadata),
103 "source_refund" => Deserialize::begin(&mut self.source_refund),
104 "transfer" => Deserialize::begin(&mut self.transfer),
105 _ => <dyn Visitor>::ignore(),
106 })
107 }
108
109 fn deser_default() -> Self {
110 Self {
111 amount: Deserialize::default(),
112 balance_transaction: Deserialize::default(),
113 created: Deserialize::default(),
114 currency: Deserialize::default(),
115 destination_payment_refund: Deserialize::default(),
116 id: Deserialize::default(),
117 metadata: Deserialize::default(),
118 source_refund: Deserialize::default(),
119 transfer: Deserialize::default(),
120 }
121 }
122
123 fn take_out(&mut self) -> Option<Self::Out> {
124 let (
125 Some(amount),
126 Some(balance_transaction),
127 Some(created),
128 Some(currency),
129 Some(destination_payment_refund),
130 Some(id),
131 Some(metadata),
132 Some(source_refund),
133 Some(transfer),
134 ) = (
135 self.amount,
136 self.balance_transaction.take(),
137 self.created,
138 self.currency.take(),
139 self.destination_payment_refund.take(),
140 self.id.take(),
141 self.metadata.take(),
142 self.source_refund.take(),
143 self.transfer.take(),
144 )
145 else {
146 return None;
147 };
148 Some(Self::Out {
149 amount,
150 balance_transaction,
151 created,
152 currency,
153 destination_payment_refund,
154 id,
155 metadata,
156 source_refund,
157 transfer,
158 })
159 }
160 }
161
162 impl Map for Builder<'_> {
163 fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
164 self.builder.key(k)
165 }
166
167 fn finish(&mut self) -> Result<()> {
168 *self.out = self.builder.take_out();
169 Ok(())
170 }
171 }
172
173 impl ObjectDeser for TransferReversal {
174 type Builder = TransferReversalBuilder;
175 }
176
177 impl FromValueOpt for TransferReversal {
178 fn from_value(v: Value) -> Option<Self> {
179 let Value::Object(obj) = v else {
180 return None;
181 };
182 let mut b = TransferReversalBuilder::deser_default();
183 for (k, v) in obj {
184 match k.as_str() {
185 "amount" => b.amount = FromValueOpt::from_value(v),
186 "balance_transaction" => b.balance_transaction = FromValueOpt::from_value(v),
187 "created" => b.created = FromValueOpt::from_value(v),
188 "currency" => b.currency = FromValueOpt::from_value(v),
189 "destination_payment_refund" => {
190 b.destination_payment_refund = FromValueOpt::from_value(v)
191 }
192 "id" => b.id = FromValueOpt::from_value(v),
193 "metadata" => b.metadata = FromValueOpt::from_value(v),
194 "source_refund" => b.source_refund = FromValueOpt::from_value(v),
195 "transfer" => b.transfer = FromValueOpt::from_value(v),
196 _ => {}
197 }
198 }
199 b.take_out()
200 }
201 }
202};
203#[cfg(feature = "serialize")]
204impl serde::Serialize for TransferReversal {
205 fn serialize<S: serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
206 use serde::ser::SerializeStruct;
207 let mut s = s.serialize_struct("TransferReversal", 10)?;
208 s.serialize_field("amount", &self.amount)?;
209 s.serialize_field("balance_transaction", &self.balance_transaction)?;
210 s.serialize_field("created", &self.created)?;
211 s.serialize_field("currency", &self.currency)?;
212 s.serialize_field("destination_payment_refund", &self.destination_payment_refund)?;
213 s.serialize_field("id", &self.id)?;
214 s.serialize_field("metadata", &self.metadata)?;
215 s.serialize_field("source_refund", &self.source_refund)?;
216 s.serialize_field("transfer", &self.transfer)?;
217
218 s.serialize_field("object", "transfer_reversal")?;
219 s.end()
220 }
221}
222impl stripe_types::Object for TransferReversal {
223 type Id = stripe_shared::TransferReversalId;
224 fn id(&self) -> &Self::Id {
225 &self.id
226 }
227
228 fn into_id(self) -> Self::Id {
229 self.id
230 }
231}
232stripe_types::def_id!(TransferReversalId);