paystack/models/
subscription_models.rs1use 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}