fix(server): avoid global rejection when event handler errors (#10467)

This commit is contained in:
liuyi
2025-02-27 14:25:46 +08:00
committed by GitHub
parent caa4dfedfc
commit b3821ad619
5 changed files with 103 additions and 24 deletions
@@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
import { PrismaClient } from '@prisma/client';
import { EventBus, JobQueue, OnEvent, OnJob } from '../../base';
import { EventBus, JobQueue, OnJob } from '../../base';
import {
SubscriptionPlan,
SubscriptionRecurring,
@@ -126,6 +126,15 @@ export class SubscriptionCronJobs {
});
for (const subscription of subscriptions) {
await this.db.subscription.delete({
where: {
targetId_plan: {
targetId: subscription.targetId,
plan: subscription.plan,
},
},
});
this.event.emit('user.subscription.canceled', {
userId: subscription.targetId,
plan: subscription.plan as SubscriptionPlan,
@@ -133,19 +142,4 @@ export class SubscriptionCronJobs {
});
}
}
@OnEvent('user.subscription.canceled')
async handleUserSubscriptionCanceled({
userId,
plan,
}: Events['user.subscription.canceled']) {
await this.db.subscription.delete({
where: {
targetId_plan: {
targetId: userId,
plan,
},
},
});
}
}