import "server-only"; import { Pool, types } from "pg"; // pg gibt "date"-Spalten sonst als lokale Date-Objekte zurück (Zeitzonen- // Verschiebung möglich); die App vergleicht Datumswerte überall als reine // "YYYY-MM-DD"-Strings (siehe lib/menu.ts), daher Rohstring beibehalten. types.setTypeParser(types.builtins.DATE, (val) => val); // pg gibt "numeric" (dishes.price) sonst als String zurück (Precision- // Schutz), die App erwartet aber überall eine JS-Zahl (wie zuvor von // Postgrest geliefert) – für Preise im niedrigen vierstelligen Bereich // mit 2 Nachkommastellen unproblematisch. types.setTypeParser(types.builtins.NUMERIC, (val) => Number(val)); // Next.js' Dev-Server lädt Module bei Hot-Reloads neu; ohne den // globalThis-Cache würde bei jedem Speichern ein neuer Pool (und damit // neue offene Verbindungen) entstehen. declare global { var __pgPool: Pool | undefined; } export const pool = globalThis.__pgPool ?? new Pool({ connectionString: process.env.DATABASE_URL }); if (process.env.NODE_ENV !== "production") { globalThis.__pgPool = pool; }