import Link from "next/link"; import { ContentHeader } from "@/components/layout/ContentHeader"; import { Card } from "@/components/ui/Card"; import { prisma } from "@/lib/db"; import { formatDatumZeit } from "@/lib/format"; export const metadata = { title: "Protokoll" }; type SuchParameter = Promise>; export default async function AuditSeite({ searchParams }: { searchParams: SuchParameter }) { const roh = await searchParams; const einzeln = (wert: string | string[] | undefined) => (Array.isArray(wert) ? wert[0] : wert); const aktion = einzeln(roh.aktion); const entitaet = einzeln(roh.entitaet); const [eintraege, aktionen] = await Promise.all([ prisma.auditEintrag.findMany({ where: { ...(aktion ? { aktion } : {}), ...(entitaet ? { entitaet } : {}), }, orderBy: { erstelltAm: "desc" }, take: 200, include: { benutzer: { select: { name: true, email: true } } }, }), prisma.auditEintrag.groupBy({ by: ["aktion"], _count: { _all: true }, orderBy: { aktion: "asc" } }), ]); return ( <>
{aktion || entitaet ? Filter zurücksetzen : null}
{eintraege.map((eintrag) => ( ))} {eintraege.length === 0 ? ( ) : null}
Zeitpunkt Aktion Entität Benutzer Details
{formatDatumZeit(eintrag.erstelltAm)} {eintrag.aktion} {eintrag.entitaet} {eintrag.entitaetId ? (
{eintrag.entitaetId}
) : null}
{eintrag.benutzer?.name ?? "System"} {eintrag.aenderung ? JSON.stringify(eintrag.aenderung) : "–"}
Keine Einträge gefunden.
); }