a75303f857
- lib/db.ts entfernt, mysql2-Abhängigkeit gestrichen - lib/phpdb.ts: HTTP-Client für alle DB-Operationen via DB4js_all.php - Alle API-Routen und Server Actions auf phpdb.ts umgestellt - compose.yml / docker-compose.prod.yml: MySQL/phpMyAdmin-Container entfernt - app/api/DB4js_all.php/route.ts: Proxy für Statistik-AJAX-Calls - Statistik-Grafik liest ab 2026 live aus logbuch statt StatistikJahre - PHP 7.3-Kompatibilität: str_contains → strpos Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
25 lines
868 B
TypeScript
25 lines
868 B
TypeScript
import { NextResponse } from 'next/server';
|
|
|
|
const DB_URL = (process.env.PHP_DB_URL ?? 'http://localhost:8080/DB4js_all.php')
|
|
.replace(/\?.*$/, '');
|
|
|
|
async function proxy(req: Request) {
|
|
const search = new URL(req.url).search;
|
|
const target = DB_URL + search;
|
|
const isReadOnly = req.method === 'GET' || req.method === 'HEAD';
|
|
const upstream = await fetch(target, {
|
|
method: req.method,
|
|
headers: { 'content-type': req.headers.get('content-type') ?? 'application/x-www-form-urlencoded' },
|
|
body: isReadOnly ? undefined : await req.arrayBuffer(),
|
|
cache: 'no-store',
|
|
});
|
|
const body = await upstream.arrayBuffer();
|
|
return new NextResponse(Buffer.from(body), {
|
|
status: upstream.status,
|
|
headers: { 'content-type': upstream.headers.get('content-type') ?? 'application/json' },
|
|
});
|
|
}
|
|
|
|
export const GET = proxy;
|
|
export const POST = proxy;
|