Skip to content

Commit e9a7d26

Browse files
committed
error handling
1 parent 40fcf5c commit e9a7d26

File tree

1 file changed

+47
-23
lines changed

1 file changed

+47
-23
lines changed

packages/rpc/src/routers/uptime.ts

Lines changed: 47 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -247,15 +247,25 @@ export const uptimeRouter = {
247247
});
248248
}
249249

250-
await Promise.all([
251-
input.pause
252-
? client.schedules.pause({ schedule: input.scheduleId })
253-
: client.schedules.resume({ schedule: input.scheduleId }),
254-
db
255-
.update(uptimeSchedules)
256-
.set({ isPaused: input.pause, updatedAt: new Date() })
257-
.where(eq(uptimeSchedules.id, input.scheduleId)),
258-
]);
250+
try {
251+
await Promise.all([
252+
input.pause
253+
? client.schedules.pause({ schedule: input.scheduleId })
254+
: client.schedules.resume({ schedule: input.scheduleId }),
255+
db
256+
.update(uptimeSchedules)
257+
.set({ isPaused: input.pause, updatedAt: new Date() })
258+
.where(eq(uptimeSchedules.id, input.scheduleId)),
259+
]);
260+
} catch (error) {
261+
logger.error(
262+
{ scheduleId: input.scheduleId, error },
263+
"Failed to toggle QStash schedule"
264+
);
265+
throw new ORPCError("INTERNAL_SERVER_ERROR", {
266+
message: "Failed to update monitor status",
267+
});
268+
}
259269

260270
logger.info(
261271
{ scheduleId: input.scheduleId, paused: input.pause },
@@ -277,13 +287,20 @@ export const uptimeRouter = {
277287
});
278288
}
279289

280-
await Promise.all([
281-
client.schedules.pause({ schedule: input.scheduleId }),
282-
db
283-
.update(uptimeSchedules)
284-
.set({ isPaused: true, updatedAt: new Date() })
285-
.where(eq(uptimeSchedules.id, input.scheduleId)),
286-
]);
290+
try {
291+
await Promise.all([
292+
client.schedules.pause({ schedule: input.scheduleId }),
293+
db
294+
.update(uptimeSchedules)
295+
.set({ isPaused: true, updatedAt: new Date() })
296+
.where(eq(uptimeSchedules.id, input.scheduleId)),
297+
]);
298+
} catch (error) {
299+
logger.error({ scheduleId: input.scheduleId, error }, "Failed to pause");
300+
throw new ORPCError("INTERNAL_SERVER_ERROR", {
301+
message: "Failed to pause monitor",
302+
});
303+
}
287304

288305
logger.info({ scheduleId: input.scheduleId }, "Schedule paused");
289306
return { success: true, isPaused: true };
@@ -300,13 +317,20 @@ export const uptimeRouter = {
300317
});
301318
}
302319

303-
await Promise.all([
304-
client.schedules.resume({ schedule: input.scheduleId }),
305-
db
306-
.update(uptimeSchedules)
307-
.set({ isPaused: false, updatedAt: new Date() })
308-
.where(eq(uptimeSchedules.id, input.scheduleId)),
309-
]);
320+
try {
321+
await Promise.all([
322+
client.schedules.resume({ schedule: input.scheduleId }),
323+
db
324+
.update(uptimeSchedules)
325+
.set({ isPaused: false, updatedAt: new Date() })
326+
.where(eq(uptimeSchedules.id, input.scheduleId)),
327+
]);
328+
} catch (error) {
329+
logger.error({ scheduleId: input.scheduleId, error }, "Failed to resume");
330+
throw new ORPCError("INTERNAL_SERVER_ERROR", {
331+
message: "Failed to resume monitor",
332+
});
333+
}
310334

311335
logger.info({ scheduleId: input.scheduleId }, "Schedule resumed");
312336
return { success: true, isPaused: false };

0 commit comments

Comments
 (0)