import { PrismaClient } from '@prisma/client'; // Initialize Prisma client const prisma = new PrismaClient(); export default defineEventHandler(async (event) => { try { // Get the process ID from the route parameter const processId = getRouterParam(event, 'id'); if (!processId) { return { success: false, error: 'Process ID is required' }; } // Check if the ID is a UUID or numeric ID const isUUID = processId.length === 36 && processId.includes('-'); // First, get the current process to validate it can be unpublished const currentProcess = await prisma.process.findFirst({ where: isUUID ? { processUUID: processId } : { processID: parseInt(processId) } }); if (!currentProcess) { return { success: false, error: 'Process not found' }; } // Check if the process is currently published if (currentProcess.processStatus !== 'published') { return { success: false, error: 'Process is not currently published' }; } // Update the process status to draft const unpublishedProcess = await prisma.process.update({ where: isUUID ? { processUUID: processId } : { processID: parseInt(processId) }, data: { processStatus: 'draft' }, include: { creator: { select: { userID: true, userFullName: true, userUsername: true } } } }); return { success: true, message: 'Process unpublished successfully', process: unpublishedProcess }; } catch (error) { console.error('Error unpublishing process:', error); // Handle specific Prisma errors if (error.code === 'P2025') { return { success: false, error: 'Process not found' }; } return { success: false, error: 'Failed to unpublish process', details: process.env.NODE_ENV === 'development' ? error.message : undefined }; } });