Edit & Delete Site

This commit is contained in:
headlesdev
2025-05-18 21:50:33 +02:00
parent 4a89ebf7d1
commit 6f7d65bcda
6 changed files with 197 additions and 10 deletions

View File

@@ -1,13 +1,10 @@
import { NextRequest, NextResponse } from "next/server";
import prisma from "@/app/prisma";
interface Body {
siteId: string;
}
export async function DELETE(request: NextRequest) {
const body: Body = await request.json();
const { siteId } = body;
const searchParams = request.nextUrl.searchParams;
const siteId = searchParams.get("siteId");
try {
const site = await prisma.site.delete({

View File

@@ -1,19 +1,21 @@
import { NextRequest, NextResponse } from "next/server";
import prisma from "@/app/prisma";
import { Network } from "@/app/types";
interface Body {
siteId: string;
id: string;
name: string;
description: string;
networks: Network[];
}
export async function POST(request: NextRequest) {
const body: Body = await request.json();
const { siteId, name, description } = body;
const { id, name, description, networks } = body;
try {
const site = await prisma.site.update({
where: { id: Number(siteId) },
where: { id: Number(id) },
data: { name, description },
});

View File

@@ -7,6 +7,8 @@ import AddNetwork from "@/components/dialogues/AddNetwork"
import { Plus, Pencil, Trash, Info, Building2, Network as NetworkIcon, Globe, Cpu } from "lucide-react"
import EditNetwork from "@/components/dialogues/EditNetwork"
import DeleteNetwork from "@/components/dialogues/DeleteNetwork"
import EditSite from "@/components/dialogues/EditSite"
import DeleteSite from "@/components/dialogues/DeleteSite"
interface SitesPageProps {
username: string
@@ -31,8 +33,24 @@ export default function SitesPage({ username, name, siteId }: SitesPageProps) {
<div className="card bg-base-100 shadow-xl rounded-xl overflow-hidden border border-base-200 w-full">
<div className="card-body p-6">
<div className="w-full flex justify-between items-center mb-4">
<h1 className="text-2xl font-bold w-1/2">Site - {site.name}</h1>
<div className="w-1/2 flex justify-end">
<h1 className="text-2xl font-bold">Site - {site.name}</h1>
<div className="flex items-center gap-2">
{isEditMode && (
<>
<button
className="btn btn-primary btn-sm px-2"
onClick={() => (document.getElementById('edit_site') as HTMLDialogElement)?.showModal()}
>
<Pencil className="h-4 w-4" />
</button>
<button
className="btn btn-error btn-sm px-2"
onClick={() => (document.getElementById('delete_site') as HTMLDialogElement)?.showModal()}
>
<Trash className="h-4 w-4" />
</button>
</>
)}
<EditModeToggle onToggle={setIsEditMode} />
</div>
</div>
@@ -132,6 +150,8 @@ export default function SitesPage({ username, name, siteId }: SitesPageProps) {
</div>
<AddNetwork siteId={site.id} />
<EditSite site={site} />
<DeleteSite siteId={site.id} />
</div>
</main>
</Sidebar>