refactor(server): saving past_due subscription in db (#10908)

close CLOUD-122
This commit is contained in:
forehalo
2025-03-17 10:17:14 +00:00
parent 9b5d12dc71
commit 8b67496951
5 changed files with 65 additions and 43 deletions
@@ -467,13 +467,17 @@ export class SubscriptionService implements OnApplicationBootstrap {
throw new InternalServerError('Failed to parse stripe subscription.');
}
const isPlanActive =
const shouldSave =
subscription.status === SubscriptionStatus.Active ||
subscription.status === SubscriptionStatus.Trialing;
subscription.status === SubscriptionStatus.Trialing ||
// PastDue is a temporary status, it will be cancelled after all recurring payments retries failed.
// Saved in db to let users be able to cancel further retries manually.
subscription.status === SubscriptionStatus.PastDue;
const manager = this.select(knownSubscription.lookupKey.plan);
if (!isPlanActive) {
// TODO(@forehalo): trigger 'subscription.status.changed' event to let strategy handle them. after migrated to Model
if (!shouldSave) {
await manager.deleteStripeSubscription(knownSubscription);
} else {
await manager.saveStripeSubscription(knownSubscription);