paystack/models/
subscription_models.rs

1use std::fmt;
2
3use serde::{Deserialize, Serialize};
4
5use crate::{Authorization, Domain};
6
7#[derive(Debug, Clone, Deserialize, Serialize, Default)]
8pub struct Subscription {
9    pub customer: u32,
10    pub plan: u32,
11    pub integration: u32,
12    pub domain: Domain,
13    pub start: u32,
14    pub status: SubscriptionStatus,
15    pub quantity: u32,
16    pub amount: u32,
17    pub subscription_code: String,
18    pub email_token: String,
19    pub authorization: Authorization,
20    pub easy_cron_id: Option<String>,
21    pub cron_expression: String,
22    pub next_payment_date: String,
23    pub open_invoice: Option<String>,
24    pub id: u32,
25    #[serde(rename = "createdAt")]
26    pub created_at: String,
27    #[serde(rename = "updatedAt")]
28    pub updated_at: String,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, Default)]
32#[serde(rename_all = "lowercase")]
33#[non_exhaustive]
34pub enum SubscriptionStatus {
35    #[default]
36    Complete,
37}
38
39impl fmt::Display for SubscriptionStatus {
40    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
41        let status = match self {
42            SubscriptionStatus::Complete => "complete",
43        };
44        write!(f, "{status}")
45    }
46}