Files
Wabenhain/prisma/migrations/20260904120000_add_performance_indexes/migration.sql
T
Nick SzaunigandClaude Sonnet 5 04cc3061cf perf: DB-Indizes, Footer als Server Component, Site-weite Fehlerseiten
Datenbank (prisma/migrations/20260904120000_add_performance_indexes):
7 fehlende Indizes auf Fremdschluessel-/Filter-Spalten ergaenzt
(Order.customerId+createdAt, Order.status, Order.createdAt,
Order.discountCodeId, OrderItem.orderId, Address.customerId,
AuditLog.createdAt) — bislang volle Tabellenscans bei Bestelluebersicht,
Admin-Dashboard, Checkout-Gutscheinpruefung und Audit-Log.

Bundle-Groesse: Footer (TikTok/YouTube/Instagram-Icons, Copyright-Zeile)
aus dem client-seitigen site-chrome.tsx in eine eigene Server Component
(site-footer.tsx) ausgelagert — brauchte "use client" nur wegen
useI18n(), jetzt getDictionary()-Server-Aufruf wie auf jeder Admin-Seite.
Entfernt ungenutztes clientseitiges JS/Hydration aus jedem Seitenaufruf
(Footer steht im Root-Layout).

UX: app/not-found.tsx und app/error.tsx ergaenzt (Next.js-Konventionen
fuer 404 bzw. Laufzeitfehler) — beide fehlten komplett, unbekannte Routen
und Rendering-Fehler zeigten bisher Next.js' generische, unbrandete
Standardseiten statt einer zur Seite passenden Nutzerfuehrung.
Dictionary-Kollision dabei aufgefallen und aufgeloest: eine bereits
bestehende, admin-interne errorPage-Uebersetzung (src/app/admin/error.tsx,
seit dem urspruenglichen App-Grundgeruest vorhanden) blieb unangetastet,
die neue site-weite Fehlerseite nutzt einen eigenen Schluessel
(siteErrorPage).

Verifiziert: tsc --noEmit clean, 118/118 Tests gruen, pnpm build clean.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-04 09:07:37 +02:00

36 lines
1.5 KiB
SQL

-- CreateIndex
-- "Meine Bestellungen" (Konto) sowie der Datenexport filtern nach customerId
-- und sortieren nach createdAt absteigend — ein zusammengesetzter Index
-- bedient beides in einem Indexzugriff statt eines vollen Tabellenscans.
CREATE INDEX "orders_customerId_createdAt_idx" ON "orders"("customerId", "createdAt");
-- CreateIndex
-- Statusfilter in der Admin-Bestellliste (exakte Gleichheit) und Basis fuer
-- die Status-Auswertungen im Admin-Dashboard.
CREATE INDEX "orders_status_idx" ON "orders"("status");
-- CreateIndex
-- Datumsbereichs-Filter im Admin-Dashboard (Tages-/Monatsumsatz, Umsatztrend)
-- sowie Standardsortierung in Bestelllisten ohne weiteren Filter.
CREATE INDEX "orders_createdAt_idx" ON "orders"("createdAt");
-- CreateIndex
-- Nutzungszaehlung eines Rabattcodes beim Checkout (Order.count nach
-- discountCodeId + status).
CREATE INDEX "orders_discountCodeId_idx" ON "orders"("discountCodeId");
-- CreateIndex
-- Wird bei jedem Laden der Positionen einer Bestellung (Konto, Admin,
-- Rechnung, Datenexport) ueber die order.items-Relation abgefragt.
CREATE INDEX "order_items_orderId_idx" ON "order_items"("orderId");
-- CreateIndex
-- Adressliste und Standardadresse-Update im Kundenkonto filtern nach
-- customerId.
CREATE INDEX "addresses_customerId_idx" ON "addresses"("customerId");
-- CreateIndex
-- Admin-Audit-Log-Seite sortiert eine unbegrenzt wachsende Tabelle nach
-- createdAt absteigend (ORDER BY + LIMIT ohne weiteren Filter).
CREATE INDEX "audit_logs_createdAt_idx" ON "audit_logs"("createdAt");