'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; export function BackupCreateButton() { const router = useRouter(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); async function onCreate() { setLoading(true); setError(null); const res = await fetch('/api/admin/backups', { method: 'POST' }); setLoading(false); if (res.ok) { router.refresh(); } else { const b = (await res.json().catch(() => null)) as { error?: { message?: string }; } | null; setError(b?.error?.message ?? '作成に失敗しました'); } } return (

DBファイル + uploadsディレクトリをZIP化してバックアップを作成します。

{error && (

{error}

)}
); }