|
- import { NextResponse } from 'next/server';
- import { stat } from 'node:fs/promises';
- import path from 'node:path';
- import { checkSystemBin } from '@/lib/system-bins';
- import { restoreFromZipFile } from '@/lib/restore-zip';
-
- export const dynamic = 'force-dynamic';
- export const maxDuration = 600;
-
- const PRESET_PATH = path.join(process.cwd(), 'factory', 'preset.zip');
-
- export async function POST() {
- if (!(await checkSystemBin('unzip', '-v'))) {
- return NextResponse.json({ error: "Binario 'unzip' non disponibile sul server." }, { status: 503 });
- }
-
- try {
- await stat(PRESET_PATH);
- } catch {
- return NextResponse.json(
- { error: 'Nessun factory preset configurato. Imposta prima lo stato attuale come preset.' },
- { status: 404 },
- );
- }
-
- const result = await restoreFromZipFile(PRESET_PATH);
- if (!result.ok) {
- return NextResponse.json({ error: result.error, detail: result.detail }, { status: result.status });
- }
- return NextResponse.json({
- ok: true,
- restored: { cards: result.cards, portals: result.portals },
- previousDataBackup: result.previousBackup,
- });
- }
|