corrad-bp/server/api/tasks/[id].get.js
2025-06-16 00:52:49 +08:00

122 lines
3.0 KiB
JavaScript

import { PrismaClient } from '@prisma/client';
// Initialize Prisma client
const prisma = new PrismaClient();
export default defineEventHandler(async (event) => {
// Get the task ID from the route params
const taskId = event.context.params.id;
try {
// Find the task
let task;
if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(taskId)) {
// If it looks like a UUID
task = await prisma.task.findUnique({
where: { taskUUID: taskId },
include: {
case: {
select: {
caseID: true,
caseUUID: true,
caseName: true,
caseStatus: true,
process: {
select: {
processID: true,
processUUID: true,
processName: true
}
}
}
},
assignedTo: {
select: {
userID: true,
userFullName: true,
userUsername: true
}
},
form: {
select: {
formID: true,
formUUID: true,
formName: true,
formDescription: true,
formComponents: true,
formStatus: true,
customCSS: true,
customScript: true,
formEvents: true,
scriptMode: true
}
}
}
});
} else if (!isNaN(parseInt(taskId))) {
// If it's a numeric ID
task = await prisma.task.findUnique({
where: { taskID: parseInt(taskId) },
include: {
case: {
select: {
caseID: true,
caseUUID: true,
caseName: true,
caseStatus: true,
process: {
select: {
processID: true,
processUUID: true,
processName: true
}
}
}
},
assignedTo: {
select: {
userID: true,
userFullName: true,
userUsername: true
}
},
form: {
select: {
formID: true,
formUUID: true,
formName: true,
formDescription: true,
formComponents: true,
formStatus: true,
customCSS: true,
customScript: true,
formEvents: true,
scriptMode: true
}
}
}
});
}
if (!task) {
return {
success: false,
error: 'Task not found'
};
}
return {
success: true,
task
};
} catch (error) {
console.error(`Error fetching task ${taskId}:`, error);
return {
success: false,
error: 'Failed to fetch task',
details: process.env.NODE_ENV === 'development' ? error.message : undefined
};
}
});