2024-12-14 17:49:50 +01:00
|
|
|
"use client"
|
2024-12-14 17:54:03 +01:00
|
|
|
|
2024-12-01 20:56:19 +01:00
|
|
|
import {Tabs, TabsContent, TabsList, TabsTrigger} from "@/components/ui/tabs";
|
2024-12-16 16:30:00 +01:00
|
|
|
import {DataTableWithPagination} from "@/components/wrappers/common/table/data-table-with-pagination";
|
2024-12-14 17:54:03 +01:00
|
|
|
import {Backup, Database, Restoration} from "@prisma/client";
|
2024-12-14 17:49:50 +01:00
|
|
|
import {useEffect} from "react";
|
|
|
|
|
import {useRouter} from "next/navigation";
|
|
|
|
|
import {eventUpdate} from "@/types/events";
|
2024-12-16 20:01:30 +01:00
|
|
|
import {backupColumns} from "@/features/dashboard/backup/columns";
|
|
|
|
|
import {restoreColumns} from "@/features/dashboard/restore/columns";
|
2024-12-01 20:56:19 +01:00
|
|
|
|
|
|
|
|
export type DatabaseTabsProps = {
|
|
|
|
|
backups: Backup[]
|
2024-12-14 17:52:10 +01:00
|
|
|
restorations: Restoration[]
|
2024-12-10 11:22:36 +01:00
|
|
|
isAlreadyRestore: boolean
|
2024-12-14 17:49:50 +01:00
|
|
|
database: Database
|
2024-12-01 20:56:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const DatabaseTabs = (props: DatabaseTabsProps) => {
|
2024-12-14 17:49:50 +01:00
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const eventSource = new EventSource('/api/events');
|
|
|
|
|
|
|
|
|
|
eventSource.addEventListener('modification', (event) => {
|
2024-12-14 17:54:03 +01:00
|
|
|
const data: eventUpdate = JSON.parse(event.data)
|
|
|
|
|
if (data.update) {
|
2024-12-14 17:49:50 +01:00
|
|
|
console.log("update", data.update)
|
|
|
|
|
router.refresh()
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
eventSource.close();
|
|
|
|
|
};
|
|
|
|
|
}, []);
|
|
|
|
|
|
2024-12-01 20:56:19 +01:00
|
|
|
return (
|
|
|
|
|
<Tabs className="flex flex-col flex-1" defaultValue="backup">
|
|
|
|
|
|
|
|
|
|
<TabsList className="grid w-full grid-cols-2">
|
|
|
|
|
<TabsTrigger value="backup">Backup</TabsTrigger>
|
|
|
|
|
<TabsTrigger value="restore">Restoration</TabsTrigger>
|
|
|
|
|
</TabsList>
|
|
|
|
|
|
|
|
|
|
<TabsContent className="h-full justify-between" value="backup">
|
2024-12-14 17:54:03 +01:00
|
|
|
<DataTableWithPagination columns={backupColumns} data={props.backups}
|
|
|
|
|
extendedProps={props.isAlreadyRestore}/>
|
2024-12-01 20:56:19 +01:00
|
|
|
</TabsContent>
|
|
|
|
|
|
2024-12-10 11:22:36 +01:00
|
|
|
<TabsContent className="h-full justify-between" value="restore">
|
2024-12-14 17:52:10 +01:00
|
|
|
<DataTableWithPagination columns={restoreColumns} data={props.restorations}/>
|
2024-12-10 11:22:36 +01:00
|
|
|
</TabsContent>
|
2024-12-01 20:56:19 +01:00
|
|
|
</Tabs>
|
|
|
|
|
)
|
|
|
|
|
}
|