correction de l'update du
workflow
This commit is contained in:
66
src/app/api/projects/[id]/workflow/route.ts
Normal file
66
src/app/api/projects/[id]/workflow/route.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { auth } from '@/lib/auth';
|
||||
import getDB from '@/lib/prisma';
|
||||
|
||||
// PUT /api/projects/[id]/workflow — Sync workflow (nodes + connections)
|
||||
export async function PUT(
|
||||
request: NextRequest,
|
||||
{ params }: { params: Promise<{ id: string }> }
|
||||
) {
|
||||
const session = await auth();
|
||||
if (!session?.user?.id) {
|
||||
return NextResponse.json({ error: 'Non autorisé' }, { status: 401 });
|
||||
}
|
||||
|
||||
const { id } = await params;
|
||||
const prisma = getDB();
|
||||
|
||||
// Verify ownership
|
||||
const project = await prisma.project.findFirst({
|
||||
where: { id, userId: session.user.id },
|
||||
});
|
||||
if (!project) {
|
||||
return NextResponse.json({ error: 'Projet non trouvé' }, { status: 404 });
|
||||
}
|
||||
|
||||
const { nodes, connections } = await request.json();
|
||||
|
||||
// Replace all nodes and connections in a transaction
|
||||
await prisma.$transaction(async (tx) => {
|
||||
// Delete existing
|
||||
await tx.plotConnection.deleteMany({ where: { projectId: id } });
|
||||
await tx.plotNode.deleteMany({ where: { projectId: id } });
|
||||
|
||||
// Create new nodes
|
||||
if (nodes && nodes.length > 0) {
|
||||
await tx.plotNode.createMany({
|
||||
data: nodes.map((n: any) => ({
|
||||
id: n.id,
|
||||
projectId: id,
|
||||
x: n.x,
|
||||
y: n.y,
|
||||
title: n.title || '',
|
||||
description: n.description || '',
|
||||
color: n.color || '#ffffff',
|
||||
type: n.type || 'story',
|
||||
})),
|
||||
});
|
||||
}
|
||||
|
||||
// Create new connections
|
||||
if (connections && connections.length > 0) {
|
||||
await tx.plotConnection.createMany({
|
||||
data: connections.map((c: any) => ({
|
||||
id: c.id,
|
||||
projectId: id,
|
||||
source: c.source,
|
||||
target: c.target,
|
||||
})),
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return NextResponse.json({ success: true });
|
||||
}
|
||||
Reference in New Issue
Block a user