Add try-catch and validation to run triggers on reschedule (#5252)
* Add try-catch and validation to run triggers on reschedule * Update packages/features/bookings/lib/handleNewBooking.ts Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
parent
7b1e824a36
commit
7a93bec735
@@ -7,44 +7,48 @@ export async function scheduleTrigger(
|
||||
subscriberUrl: string,
|
||||
subscriber: { id: string; appId: string | null }
|
||||
) {
|
||||
//schedule job to call subscriber url at the end of meeting
|
||||
const job = schedule.scheduleJob(
|
||||
`${subscriber.appId}_${subscriber.id}`,
|
||||
booking.endTime,
|
||||
async function () {
|
||||
const body = JSON.stringify(booking);
|
||||
await fetch(subscriberUrl, {
|
||||
method: "POST",
|
||||
body,
|
||||
});
|
||||
try {
|
||||
//schedule job to call subscriber url at the end of meeting
|
||||
const job = schedule.scheduleJob(
|
||||
`${subscriber.appId}_${subscriber.id}`,
|
||||
booking.endTime,
|
||||
async function () {
|
||||
const body = JSON.stringify(booking);
|
||||
await fetch(subscriberUrl, {
|
||||
method: "POST",
|
||||
body,
|
||||
});
|
||||
|
||||
//remove scheduled job from bookings once triggered
|
||||
const updatedScheduledJobs = booking.scheduledJobs.filter((scheduledJob) => {
|
||||
return scheduledJob !== `${subscriber.appId}_${subscriber.id}`;
|
||||
});
|
||||
//remove scheduled job from bookings once triggered
|
||||
const updatedScheduledJobs = booking.scheduledJobs.filter((scheduledJob) => {
|
||||
return scheduledJob !== `${subscriber.appId}_${subscriber.id}`;
|
||||
});
|
||||
|
||||
await prisma.booking.update({
|
||||
where: {
|
||||
id: booking.id,
|
||||
},
|
||||
data: {
|
||||
scheduledJobs: updatedScheduledJobs,
|
||||
},
|
||||
});
|
||||
}
|
||||
);
|
||||
await prisma.booking.update({
|
||||
where: {
|
||||
id: booking.id,
|
||||
},
|
||||
data: {
|
||||
scheduledJobs: updatedScheduledJobs,
|
||||
},
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
//add scheduled job name to booking
|
||||
await prisma.booking.update({
|
||||
where: {
|
||||
id: booking.id,
|
||||
},
|
||||
data: {
|
||||
scheduledJobs: {
|
||||
push: job.name,
|
||||
//add scheduled job name to booking
|
||||
await prisma.booking.update({
|
||||
where: {
|
||||
id: booking.id,
|
||||
},
|
||||
},
|
||||
});
|
||||
data: {
|
||||
scheduledJobs: {
|
||||
push: job.name,
|
||||
},
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Error cancelling scheduled jobs", error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function cancelScheduledJobs(
|
||||
@@ -52,35 +56,39 @@ export async function cancelScheduledJobs(
|
||||
appId?: string | null,
|
||||
isReschedule?: boolean
|
||||
) {
|
||||
let scheduledJobs = booking.scheduledJobs || [];
|
||||
try {
|
||||
let scheduledJobs = booking.scheduledJobs || [];
|
||||
|
||||
if (booking.scheduledJobs) {
|
||||
booking.scheduledJobs.forEach(async (scheduledJob) => {
|
||||
if (appId) {
|
||||
if (scheduledJob.startsWith(appId)) {
|
||||
if (booking.scheduledJobs) {
|
||||
booking.scheduledJobs.forEach(async (scheduledJob) => {
|
||||
if (appId) {
|
||||
if (scheduledJob.startsWith(appId)) {
|
||||
if (schedule.scheduledJobs[scheduledJob]) {
|
||||
schedule.scheduledJobs[scheduledJob].cancel();
|
||||
}
|
||||
scheduledJobs = scheduledJobs?.filter((job) => scheduledJob !== job) || [];
|
||||
}
|
||||
} else {
|
||||
//if no specific appId given, delete all scheduled jobs of booking
|
||||
if (schedule.scheduledJobs[scheduledJob]) {
|
||||
schedule.scheduledJobs[scheduledJob].cancel();
|
||||
}
|
||||
scheduledJobs = scheduledJobs?.filter((job) => scheduledJob !== job) || [];
|
||||
scheduledJobs = [];
|
||||
}
|
||||
} else {
|
||||
//if no specific appId given, delete all scheduled jobs of booking
|
||||
if (schedule.scheduledJobs[scheduledJob]) {
|
||||
schedule.scheduledJobs[scheduledJob].cancel();
|
||||
}
|
||||
scheduledJobs = [];
|
||||
}
|
||||
|
||||
if (!isReschedule) {
|
||||
await prisma.booking.update({
|
||||
where: {
|
||||
uid: booking.uid,
|
||||
},
|
||||
data: {
|
||||
scheduledJobs: scheduledJobs,
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
if (!isReschedule) {
|
||||
await prisma.booking.update({
|
||||
where: {
|
||||
uid: booking.uid,
|
||||
},
|
||||
data: {
|
||||
scheduledJobs: scheduledJobs,
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error cancelling scheduled jobs", error);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user