From f8f7c3765c0fe35ed6f029b4b9e979ee6a62a002 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 7 Mar 2026 19:39:23 -0300 Subject: [PATCH] feat: include users and messages in full system backup --- frontend/src/app/api/admin/backup/route.ts | 36 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/api/admin/backup/route.ts b/frontend/src/app/api/admin/backup/route.ts index ada0b91..882e0b5 100644 --- a/frontend/src/app/api/admin/backup/route.ts +++ b/frontend/src/app/api/admin/backup/route.ts @@ -21,7 +21,7 @@ async function authenticate() { } } -// GET /api/admin/backup - Exportar todos os dados do CMS +// GET /api/admin/backup - Exportar todos os dados do CMS e Sistema export async function GET() { try { const user = await authenticate(); @@ -33,14 +33,18 @@ export async function GET() { const services = await prisma.service.findMany(); const pageContents = await prisma.pageContent.findMany(); const settings = await prisma.settings.findFirst(); + const users = await prisma.user.findMany(); + const messages = await prisma.message.findMany(); const backupData = { - version: '1.0', + version: '1.2', timestamp: new Date().toISOString(), projects, services, pageContents, settings, + users, + messages, }; return NextResponse.json(backupData); @@ -50,7 +54,7 @@ export async function GET() { } } -// POST /api/admin/backup - Importar dados do CMS +// POST /api/admin/backup - Importar dados do CMS e Sistema export async function POST(request: NextRequest) { try { const user = await authenticate(); @@ -102,7 +106,31 @@ export async function POST(request: NextRequest) { } } - // 4. Importar Configurações + // 4. Importar Usuários + if (Array.isArray(backupData.users)) { + for (const u of backupData.users) { + const { id, createdAt, updatedAt, ...data } = u; + await tx.user.upsert({ + where: { email: data.email }, + create: { id, ...data }, + update: data, + }); + } + } + + // 5. Importar Mensagens + if (Array.isArray(backupData.messages)) { + for (const msg of backupData.messages) { + const { id, createdAt, updatedAt, ...data } = msg; + await tx.message.upsert({ + where: { id: id }, + create: { id, ...data }, + update: data, + }); + } + } + + // 6. Importar Configurações if (backupData.settings) { const { id, updatedAt, ...data } = backupData.settings; const currentSettings = await tx.settings.findFirst();