stripe_misc/
financial_reporting_finance_report_run_run_parameters.rs

1#[derive(Clone, Debug)]
2#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4pub struct FinancialReportingFinanceReportRunRunParameters {
5    /// The set of output columns requested for inclusion in the report run.
6    pub columns: Option<Vec<String>>,
7    /// Connected account ID by which to filter the report run.
8    pub connected_account: Option<String>,
9    /// Currency of objects to be included in the report run.
10    pub currency: Option<stripe_types::Currency>,
11    /// Ending timestamp of data to be included in the report run.
12    /// Can be any UTC timestamp between 1 second after the user specified `interval_start` and 1 second before this report's last `data_available_end` value.
13    pub interval_end: Option<stripe_types::Timestamp>,
14    /// Starting timestamp of data to be included in the report run.
15    /// Can be any UTC timestamp between 1 second after this report's `data_available_start` and 1 second before the user specified `interval_end` value.
16    pub interval_start: Option<stripe_types::Timestamp>,
17    /// Payout ID by which to filter the report run.
18    pub payout: Option<String>,
19    /// Category of balance transactions to be included in the report run.
20    pub reporting_category: Option<String>,
21    /// Defaults to `Etc/UTC`.
22    /// The output timezone for all timestamps in the report.
23    /// A list of possible time zone values is maintained at the [IANA Time Zone Database](http://www.iana.org/time-zones).
24    /// Has no effect on `interval_start` or `interval_end`.
25    pub timezone: Option<String>,
26}
27#[doc(hidden)]
28pub struct FinancialReportingFinanceReportRunRunParametersBuilder {
29    columns: Option<Option<Vec<String>>>,
30    connected_account: Option<Option<String>>,
31    currency: Option<Option<stripe_types::Currency>>,
32    interval_end: Option<Option<stripe_types::Timestamp>>,
33    interval_start: Option<Option<stripe_types::Timestamp>>,
34    payout: Option<Option<String>>,
35    reporting_category: Option<Option<String>>,
36    timezone: Option<Option<String>>,
37}
38
39#[allow(
40    unused_variables,
41    irrefutable_let_patterns,
42    clippy::let_unit_value,
43    clippy::match_single_binding,
44    clippy::single_match
45)]
46const _: () = {
47    use miniserde::de::{Map, Visitor};
48    use miniserde::json::Value;
49    use miniserde::{Deserialize, Result, make_place};
50    use stripe_types::miniserde_helpers::FromValueOpt;
51    use stripe_types::{MapBuilder, ObjectDeser};
52
53    make_place!(Place);
54
55    impl Deserialize for FinancialReportingFinanceReportRunRunParameters {
56        fn begin(out: &mut Option<Self>) -> &mut dyn Visitor {
57            Place::new(out)
58        }
59    }
60
61    struct Builder<'a> {
62        out: &'a mut Option<FinancialReportingFinanceReportRunRunParameters>,
63        builder: FinancialReportingFinanceReportRunRunParametersBuilder,
64    }
65
66    impl Visitor for Place<FinancialReportingFinanceReportRunRunParameters> {
67        fn map(&mut self) -> Result<Box<dyn Map + '_>> {
68            Ok(Box::new(Builder {
69                out: &mut self.out,
70                builder: FinancialReportingFinanceReportRunRunParametersBuilder::deser_default(),
71            }))
72        }
73    }
74
75    impl MapBuilder for FinancialReportingFinanceReportRunRunParametersBuilder {
76        type Out = FinancialReportingFinanceReportRunRunParameters;
77        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
78            Ok(match k {
79                "columns" => Deserialize::begin(&mut self.columns),
80                "connected_account" => Deserialize::begin(&mut self.connected_account),
81                "currency" => Deserialize::begin(&mut self.currency),
82                "interval_end" => Deserialize::begin(&mut self.interval_end),
83                "interval_start" => Deserialize::begin(&mut self.interval_start),
84                "payout" => Deserialize::begin(&mut self.payout),
85                "reporting_category" => Deserialize::begin(&mut self.reporting_category),
86                "timezone" => Deserialize::begin(&mut self.timezone),
87                _ => <dyn Visitor>::ignore(),
88            })
89        }
90
91        fn deser_default() -> Self {
92            Self {
93                columns: Deserialize::default(),
94                connected_account: Deserialize::default(),
95                currency: Deserialize::default(),
96                interval_end: Deserialize::default(),
97                interval_start: Deserialize::default(),
98                payout: Deserialize::default(),
99                reporting_category: Deserialize::default(),
100                timezone: Deserialize::default(),
101            }
102        }
103
104        fn take_out(&mut self) -> Option<Self::Out> {
105            let (
106                Some(columns),
107                Some(connected_account),
108                Some(currency),
109                Some(interval_end),
110                Some(interval_start),
111                Some(payout),
112                Some(reporting_category),
113                Some(timezone),
114            ) = (
115                self.columns.take(),
116                self.connected_account.take(),
117                self.currency.take(),
118                self.interval_end,
119                self.interval_start,
120                self.payout.take(),
121                self.reporting_category.take(),
122                self.timezone.take(),
123            )
124            else {
125                return None;
126            };
127            Some(Self::Out {
128                columns,
129                connected_account,
130                currency,
131                interval_end,
132                interval_start,
133                payout,
134                reporting_category,
135                timezone,
136            })
137        }
138    }
139
140    impl Map for Builder<'_> {
141        fn key(&mut self, k: &str) -> Result<&mut dyn Visitor> {
142            self.builder.key(k)
143        }
144
145        fn finish(&mut self) -> Result<()> {
146            *self.out = self.builder.take_out();
147            Ok(())
148        }
149    }
150
151    impl ObjectDeser for FinancialReportingFinanceReportRunRunParameters {
152        type Builder = FinancialReportingFinanceReportRunRunParametersBuilder;
153    }
154
155    impl FromValueOpt for FinancialReportingFinanceReportRunRunParameters {
156        fn from_value(v: Value) -> Option<Self> {
157            let Value::Object(obj) = v else {
158                return None;
159            };
160            let mut b = FinancialReportingFinanceReportRunRunParametersBuilder::deser_default();
161            for (k, v) in obj {
162                match k.as_str() {
163                    "columns" => b.columns = FromValueOpt::from_value(v),
164                    "connected_account" => b.connected_account = FromValueOpt::from_value(v),
165                    "currency" => b.currency = FromValueOpt::from_value(v),
166                    "interval_end" => b.interval_end = FromValueOpt::from_value(v),
167                    "interval_start" => b.interval_start = FromValueOpt::from_value(v),
168                    "payout" => b.payout = FromValueOpt::from_value(v),
169                    "reporting_category" => b.reporting_category = FromValueOpt::from_value(v),
170                    "timezone" => b.timezone = FromValueOpt::from_value(v),
171                    _ => {}
172                }
173            }
174            b.take_out()
175        }
176    }
177};