feat: include users and messages in full system backup

This commit is contained in:
Erik
2026-03-07 19:39:23 -03:00
parent f44dc35d28
commit f8f7c3765c

View File

@@ -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();