Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

36 строки
1.1 KiB

  1. import { NextResponse } from 'next/server';
  2. import { stat } from 'node:fs/promises';
  3. import path from 'node:path';
  4. import { checkSystemBin } from '@/lib/system-bins';
  5. import { restoreFromZipFile } from '@/lib/restore-zip';
  6. export const dynamic = 'force-dynamic';
  7. export const maxDuration = 600;
  8. const PRESET_PATH = path.join(process.cwd(), 'factory', 'preset.zip');
  9. export async function POST() {
  10. if (!(await checkSystemBin('unzip', '-v'))) {
  11. return NextResponse.json({ error: "Binario 'unzip' non disponibile sul server." }, { status: 503 });
  12. }
  13. try {
  14. await stat(PRESET_PATH);
  15. } catch {
  16. return NextResponse.json(
  17. { error: 'Nessun factory preset configurato. Imposta prima lo stato attuale come preset.' },
  18. { status: 404 },
  19. );
  20. }
  21. const result = await restoreFromZipFile(PRESET_PATH);
  22. if (!result.ok) {
  23. return NextResponse.json({ error: result.error, detail: result.detail }, { status: result.status });
  24. }
  25. return NextResponse.json({
  26. ok: true,
  27. restored: { cards: result.cards, portals: result.portals },
  28. previousDataBackup: result.previousBackup,
  29. });
  30. }