Files
Avtex/app/server/api/tasks/update-status.post.ts
T

47 lines
1.3 KiB
TypeScript

import { requireAuth } from '~/server/utils/auth'
import { prisma } from '~/server/utils/prisma'
export default defineEventHandler(async (event) => {
const user = requireAuth(event)
const body = await readBody(event)
const { taskId, canvasId, newState } = body
if (!taskId || !canvasId || !newState) {
throw createError({ statusCode: 400, message: 'taskId, canvasId and newState are required' })
}
// 1. Найти холст
const canvas = await prisma.canvas.findUnique({
where: { id: canvasId }
})
if (!canvas) {
throw createError({ statusCode: 404, message: 'Canvas not found' })
}
// 2. Найти и обновить узел в JSON
const nodes = (canvas.nodes as any[]) || []
const nodeIdx = nodes.findIndex(n => n.id === taskId)
if (nodeIdx === -1) {
throw createError({ statusCode: 404, message: 'Task node not found in canvas' })
}
// Обновляем состояние
nodes[nodeIdx].state = newState
// Также обновляем дату изменения, если нужно
nodes[nodeIdx].updatedAt = new Date().toISOString()
// 3. Сохранить изменения в БД
await prisma.canvas.update({
where: { id: canvasId },
data: { nodes }
})
return {
success: true,
message: `Task ${taskId} moved to ${newState}`
}
})