Files
Nas-Notification/server/api/notifications/queue/retry/all.post.js

73 lines
1.6 KiB
JavaScript

import prisma from "~/server/utils/prisma";
export default defineEventHandler(async (event) => {
try {
// Find all failed jobs
const failedJobs = await prisma.notification_queue.findMany({
where: {
status: "failed",
},
select: {
id: true,
notification_id: true,
attempts: true,
},
});
if (failedJobs.length === 0) {
return {
success: true,
data: {
message: "No failed jobs to retry",
count: 0,
},
};
}
// Update all failed jobs to queued status
await prisma.notification_queue.updateMany({
where: {
status: "failed",
},
data: {
status: "queued",
last_attempt_at: null,
error_message: null,
updated_at: new Date(),
},
});
// Log the batch retry action
await prisma.notification_logs.create({
data: {
action: "Batch Job Retry",
status: "Processed",
details: `${failedJobs.length} failed jobs requeued for retry`,
created_at: new Date(),
},
});
return {
success: true,
data: {
message: `${failedJobs.length} jobs queued for retry`,
count: failedJobs.length,
},
};
} catch (error) {
console.error("Error retrying all failed jobs:", error);
if (error.statusCode) {
throw error;
}
throw createError({
statusCode: 500,
statusMessage: "Failed to retry all jobs",
data: {
error: error.message,
},
});
} finally {
}
});