use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Membership {
#[serde(rename = "membershipId")]
pub membership_id: i32,
#[serde(rename = "title")]
pub title: String,
#[serde(rename = "description")]
pub description: String,
#[serde(rename = "benefits")]
pub benefits: Vec<String>,
#[serde(rename = "price")]
pub price: f64,
#[serde(rename = "currency")]
pub currency: Currency,
#[serde(rename = "memberCount")]
pub member_count: i32,
#[serde(rename = "memberLimit", deserialize_with = "Option::deserialize")]
pub member_limit: Option<i32>,
#[serde(rename = "isInAppPurchase")]
pub is_in_app_purchase: bool,
#[serde(rename = "isPublished")]
pub is_published: bool,
}
impl Membership {
pub fn new(membership_id: i32, title: String, description: String, benefits: Vec<String>, price: f64, currency: Currency, member_count: i32, member_limit: Option<i32>, is_in_app_purchase: bool, is_published: bool) -> Membership {
Membership {
membership_id,
title,
description,
benefits,
price,
currency,
member_count,
member_limit,
is_in_app_purchase,
is_published,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Currency {
#[serde(rename = "JPY")]
Jpy,
#[serde(rename = "TWD")]
Twd,
#[serde(rename = "THB")]
Thb,
}
impl Default for Currency {
fn default() -> Currency {
Self::Jpy
}
}