Nested admin saves vs relational schema
The Problem
Project case studies include slides, challenges, screenshots, and translations—naive form posts dropped nested arrays on partial saves.
How I Solved It
Server Actions merge nested payloads server-side with explicit delete-and-recreate for child collections inside Prisma transactions.
await prisma.$transaction(async (tx) => {
await tx.projectSlide.deleteMany({ where: { projectId } })
await tx.project.update({
where: { id: projectId },
data: { slides: { create: slides } },
})
})
revalidateTag('projects')


