Files
portabase/src/components/wrappers/dashboard/projects/Database/DatabaseTabs.tsx
T

56 lines
1.9 KiB
TypeScript
Raw Normal View History

"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";
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[]
isAlreadyRestore: boolean
database: Database
2024-12-01 20:56:19 +01:00
}
export const DatabaseTabs = (props: DatabaseTabsProps) => {
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) {
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>
<TabsContent className="h-full justify-between" value="restore">
2024-12-14 17:52:10 +01:00
<DataTableWithPagination columns={restoreColumns} data={props.restorations}/>
</TabsContent>
2024-12-01 20:56:19 +01:00
</Tabs>
)
}