Fix deleting a user that has a prior subscription (#3533)
(for real this time)
This commit is contained in:
parent
d6a74b0cfe
commit
d0aef27f7b
15
apps/labrinth/.sqlx/query-79bdf720ec3631954c06fbba1da25b7e70db2e920ef1f2be77aa06f76da200fe.json
generated
Normal file
15
apps/labrinth/.sqlx/query-79bdf720ec3631954c06fbba1da25b7e70db2e920ef1f2be77aa06f76da200fe.json
generated
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"db_name": "PostgreSQL",
|
||||||
|
"query": "\n UPDATE users_subscriptions\n SET user_id = $1\n WHERE user_id = $2\n ",
|
||||||
|
"describe": {
|
||||||
|
"columns": [],
|
||||||
|
"parameters": {
|
||||||
|
"Left": [
|
||||||
|
"Int8",
|
||||||
|
"Int8"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"nullable": []
|
||||||
|
},
|
||||||
|
"hash": "79bdf720ec3631954c06fbba1da25b7e70db2e920ef1f2be77aa06f76da200fe"
|
||||||
|
}
|
||||||
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"db_name": "PostgreSQL",
|
|
||||||
"query": "\n UPDATE charges\n SET user_id = $1\n WHERE user_id = $2\n ",
|
|
||||||
"describe": {
|
|
||||||
"columns": [],
|
|
||||||
"parameters": {
|
|
||||||
"Left": [
|
|
||||||
"Int8",
|
|
||||||
"Int8"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"nullable": []
|
|
||||||
},
|
|
||||||
"hash": "f1f93419f4394c702f256fe3e5de0368ee972ed20bd4d4b2490c655fde999dda"
|
|
||||||
}
|
|
||||||
@ -1,8 +1,11 @@
|
|||||||
use super::ids::{ProjectId, UserId};
|
use super::ids::{ProjectId, UserId};
|
||||||
use super::{CollectionId, ReportId, ThreadId};
|
use super::{CollectionId, ReportId, ThreadId};
|
||||||
use crate::database::models;
|
use crate::database::models;
|
||||||
|
use crate::database::models::charge_item::ChargeItem;
|
||||||
|
use crate::database::models::user_subscription_item::UserSubscriptionItem;
|
||||||
use crate::database::models::{DatabaseError, OrganizationId};
|
use crate::database::models::{DatabaseError, OrganizationId};
|
||||||
use crate::database::redis::RedisPool;
|
use crate::database::redis::RedisPool;
|
||||||
|
use crate::models::billing::ChargeStatus;
|
||||||
use crate::models::users::Badges;
|
use crate::models::users::Badges;
|
||||||
use ariadne::ids::base62_impl::{parse_base62, to_base62};
|
use ariadne::ids::base62_impl::{parse_base62, to_base62};
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
@ -657,9 +660,26 @@ impl User {
|
|||||||
.execute(&mut **transaction)
|
.execute(&mut **transaction)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
let open_subscriptions =
|
||||||
|
UserSubscriptionItem::get_all_user(id, &mut **transaction)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
for x in open_subscriptions {
|
||||||
|
let charge =
|
||||||
|
ChargeItem::get_open_subscription(x.id, &mut **transaction)
|
||||||
|
.await?;
|
||||||
|
if let Some(mut charge) = charge {
|
||||||
|
charge.status = ChargeStatus::Cancelled;
|
||||||
|
charge.due = Utc::now();
|
||||||
|
charge.user_id = deleted_user;
|
||||||
|
|
||||||
|
charge.upsert(transaction).await?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sqlx::query!(
|
sqlx::query!(
|
||||||
"
|
"
|
||||||
UPDATE charges
|
UPDATE users_subscriptions
|
||||||
SET user_id = $1
|
SET user_id = $1
|
||||||
WHERE user_id = $2
|
WHERE user_id = $2
|
||||||
",
|
",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user