import { NextResponse } from 'next/server'; import { getDbPool } from '@/lib/db'; import { RowDataPacket, ResultSetHeader } from 'mysql2'; // GET /api/ausgaben - Fetch entries export async function GET(request: Request) { try { const { searchParams } = new URL(request.url); const limit = searchParams.get('limit') || '10'; const startDate = searchParams.get('startDate'); const month = searchParams.get('month'); const year = searchParams.get('year'); const typ = searchParams.get('typ'); const pool = getDbPool(); let query = `SELECT ID, Datum, Wo, Was, Kat, Wieviel, Wie, TYP, CASE DAYOFWEEK(Datum) WHEN 1 THEN 'Sonntag' WHEN 2 THEN 'Montag' WHEN 3 THEN 'Dienstag' WHEN 4 THEN 'Mittwoch' WHEN 5 THEN 'Donnerstag' WHEN 6 THEN 'Freitag' WHEN 7 THEN 'Samstag' END as WochTag FROM Ausgaben`; const params: any[] = []; const conditions: string[] = []; if (typ !== null && typ !== undefined) { conditions.push('TYP = ?'); params.push(parseInt(typ)); } if (month && year) { conditions.push('YEAR(Datum) = ? AND MONTH(Datum) = ?'); params.push(year, month); } else if (startDate) { conditions.push('Datum >= ?'); params.push(startDate); } if (conditions.length > 0) { query += ' WHERE ' + conditions.join(' AND '); } query += ' ORDER BY Datum DESC, ID DESC LIMIT ?'; params.push(parseInt(limit)); const [rows] = await pool.query(query, params); return NextResponse.json({ success: true, data: rows, }); } catch (error) { console.error('Database error:', error); return NextResponse.json( { success: false, error: 'Database error' }, { status: 500 } ); } } // POST /api/ausgaben - Create new entry export async function POST(request: Request) { try { const body = await request.json(); const { Datum, Wo, Was, Kat, Wieviel, Wie, TYP } = body; if (!Datum || !Wo || !Was || !Wieviel || !Wie || TYP === undefined) { return NextResponse.json( { success: false, error: 'Missing required fields' }, { status: 400 } ); } const pool = getDbPool(); const query = ` INSERT INTO Ausgaben (Datum, Wo, Was, Kat, Wieviel, Wie, TYP) VALUES (?, ?, ?, ?, ?, ?, ?) `; const [result] = await pool.query(query, [ Datum, Wo, Was, Kat || 'L', parseFloat(Wieviel), Wie, TYP, ]); return NextResponse.json({ success: true, id: result.insertId, }); } catch (error) { console.error('Database error:', error); return NextResponse.json( { success: false, error: 'Database error' }, { status: 500 } ); } }