fix(server): subscription delete race condition (#11729)

This commit is contained in:
forehalo
2025-04-16 08:18:29 +00:00
parent 84bf7d2a41
commit bfb94acc42
2 changed files with 18 additions and 14 deletions

View File

@@ -256,17 +256,19 @@ export class UserSubscriptionManager extends SubscriptionManager {
stripeSubscription, stripeSubscription,
}: KnownStripeSubscription) { }: KnownStripeSubscription) {
this.assertUserIdExists(userId); this.assertUserIdExists(userId);
this.event.emit('user.subscription.canceled', { const result = await this.db.subscription.deleteMany({
userId,
plan: lookupKey.plan,
recurring: lookupKey.recurring,
});
await this.db.subscription.deleteMany({
where: { where: {
stripeSubscriptionId: stripeSubscription.id, stripeSubscriptionId: stripeSubscription.id,
}, },
}); });
if (result.count > 0) {
this.event.emit('user.subscription.canceled', {
userId,
plan: lookupKey.plan,
recurring: lookupKey.recurring,
});
}
} }
async cancelSubscription(subscription: Subscription) { async cancelSubscription(subscription: Subscription) {

View File

@@ -187,15 +187,17 @@ export class WorkspaceSubscriptionManager extends SubscriptionManager {
); );
} }
this.event.emit('workspace.subscription.canceled', { const result = await this.db.subscription.deleteMany({
workspaceId,
plan: lookupKey.plan,
recurring: lookupKey.recurring,
});
await this.db.subscription.deleteMany({
where: { stripeSubscriptionId: stripeSubscription.id }, where: { stripeSubscriptionId: stripeSubscription.id },
}); });
if (result.count > 0) {
this.event.emit('workspace.subscription.canceled', {
workspaceId,
plan: lookupKey.plan,
recurring: lookupKey.recurring,
});
}
} }
getSubscription(identity: z.infer<typeof WorkspaceSubscriptionIdentity>) { getSubscription(identity: z.infer<typeof WorkspaceSubscriptionIdentity>) {