import { NextRequest, NextResponse } from 'next/server'; import { resolveRange } from '@/lib/ranges'; import { fetchVerbrauch } from '@/lib/influx'; import { RangeKey } from '@/types/strom'; const VALID_RANGES: RangeKey[] = ['24h', '7d', '31d', '365d']; // GET /api/verbrauch?range=24h&date=YYYY-MM-DD // ?range=7d&date=YYYY-MM-DD // ?range=31d&month=YYYY-MM // ?range=365d&year=YYYY export async function GET(request: NextRequest) { const sp = request.nextUrl.searchParams; const range = sp.get('range') as RangeKey | null; if (!range || !VALID_RANGES.includes(range)) { return NextResponse.json( { success: false, error: `Ungueltiger range-Parameter. Erlaubt: ${VALID_RANGES.join(', ')}` }, { status: 400 } ); } try { const resolved = resolveRange(range, { date: sp.get('date'), month: sp.get('month'), year: sp.get('year'), }); const data = await fetchVerbrauch(resolved); return NextResponse.json( { success: true, data }, { headers: { 'Cache-Control': 'no-store, no-cache, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', }, } ); } catch (error) { console.error('InfluxDB error:', error); return NextResponse.json( { success: false, error: 'Fehler beim Laden der Verbrauchsdaten.' }, { status: 500 } ); } }