fix(server): subscription delete race condition (#11729)
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user