chore: add more param for plan cancellation

This commit is contained in:
Zack Fu Zi Xiang 2024-07-08 01:27:41 +08:00
parent 430fbf845a
commit 8a2ba59ce8
No known key found for this signature in database
2 changed files with 28 additions and 21 deletions

View File

@ -54,7 +54,7 @@ impl Client {
("recurring_interval", recurring_interval.as_str()), ("recurring_interval", recurring_interval.as_str()),
( (
"workspace_subscription_plan", "workspace_subscription_plan",
workspace_subscription_plan.as_str(), workspace_subscription_plan.as_ref(),
), ),
("success_url", success_url), ("success_url", success_url),
]) ])
@ -66,7 +66,11 @@ impl Client {
.into_data() .into_data()
} }
pub async fn cancel_subscription(&self, workspace_id: &str) -> Result<(), AppResponseError> { pub async fn cancel_subscription(
&self,
workspace_id: &str,
plan: &SubscriptionPlan,
) -> Result<(), AppResponseError> {
let url = format!( let url = format!(
"{}/billing/api/v1/cancel-subscription", "{}/billing/api/v1/cancel-subscription",
self.base_billing_url() self.base_billing_url()
@ -74,7 +78,10 @@ impl Client {
let resp = self let resp = self
.http_client_with_auth(Method::POST, &url) .http_client_with_auth(Method::POST, &url)
.await? .await?
.json(&json!({ "workspace_id": workspace_id })) .json(&json!({
"workspace_id": workspace_id,
"plan": plan.as_ref(),
}))
.send() .send()
.await?; .await?;
AppResponse::<()>::from_response(resp).await?.into_error() AppResponse::<()>::from_response(resp).await?.into_error()

View File

@ -16,31 +16,31 @@ impl RecurringInterval {
} }
} }
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionPlan {
Pro,
Team,
}
impl SubscriptionPlan {
pub fn as_str(&self) -> &str {
match self {
SubscriptionPlan::Pro => "pro",
SubscriptionPlan::Team => "team",
}
}
}
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
#[repr(i16)] #[repr(i16)]
pub enum WorkspaceSubscriptionPlan { pub enum SubscriptionPlan {
Unknown = -1, Unknown = -1,
Free = 0, Free = 0,
Pro = 1, Pro = 1,
Team = 2, Team = 2,
AIMax = 3,
AILocal = 4,
}
impl AsRef<str> for SubscriptionPlan {
fn as_ref(&self) -> &str {
match self {
SubscriptionPlan::Free => "free",
SubscriptionPlan::Pro => "pro",
SubscriptionPlan::Team => "team",
SubscriptionPlan::AIMax => "ai_max",
SubscriptionPlan::AILocal => "ai_local",
SubscriptionPlan::Unknown => "unknown",
}
}
} }
#[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)] #[derive(Copy, Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
@ -59,7 +59,7 @@ pub enum SubscriptionStatus {
#[derive(Deserialize, Debug)] #[derive(Deserialize, Debug)]
pub struct WorkspaceSubscriptionStatus { pub struct WorkspaceSubscriptionStatus {
pub workspace_id: String, pub workspace_id: String,
pub workspace_plan: WorkspaceSubscriptionPlan, pub workspace_plan: SubscriptionPlan,
pub recurring_interval: RecurringInterval, pub recurring_interval: RecurringInterval,
pub subscription_status: SubscriptionStatus, pub subscription_status: SubscriptionStatus,
pub subscription_quantity: u64, pub subscription_quantity: u64,