"use client"; // Mark as client component import { Separator } from "@radix-ui/react-dropdown-menu"; import { Dispatch, useState } from "react"; export default function DatabaseSettings() { const [uploadStatus, setUploadStatus] = useState(null); const [remoteCopyStatus, setRemoteCopyStatus] = useState(null); const uploadDB = async (formData: FormData, setStatus: Dispatch) => { try { const response = await fetch("/api/db/upload", { method: "POST", body: formData, }); if (response.ok) { setStatus("Database uploaded successfully!"); } else { const error = await response.json(); setStatus(error.message || "An error occurred during upload."); } } catch (error) { console.error("Error uploading the database:", error); setStatus("An error occurred during upload."); } } // Handle form submission const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); // Prevent default form submission const formData = new FormData(event.currentTarget); uploadDB(formData, setUploadStatus); }; const remoteCopy = async () => { const remoteUrl = "https://lifetracker.ryanpandya.com/api/db/download"; setRemoteCopyStatus("Downloading..."); const download = await fetch(remoteUrl); if (!download.ok) { throw new Error(`Failed to fetch from ${remoteUrl}: ${download.statusText}`); } const dbData = await download.blob(); const formData = new FormData(); formData.append('sqlFile', dbData, 'remoteDB-file.sql'); uploadDB(formData, setRemoteCopyStatus); // try { // const response = await fetch("/api/db/upload", { // method: "POST", // body: formData, // }); // if (response.ok) { // setUploadStatus("Database uploaded successfully!"); // } else { // const error = await response.json(); // setUploadStatus(error.message || "An error occurred during upload."); // } // } catch (error) { // console.error("Error uploading the database:", error); // setUploadStatus("An error occurred during upload."); // } }; return ( <>
Upload Postgres SQL
{uploadStatus &&

{uploadStatus}

}
Download Postgres SQL
{process.env.NODE_ENV === 'development' ?
Copy from Remote URL
{remoteCopyStatus &&

{remoteCopyStatus}

}
: ""} ); }