import { NextRequest, NextResponse } from 'next/server'; import { requireRole } from '@/lib/auth'; import { db } from '@/lib/db'; export async function GET(request: NextRequest) { try { const year = parseInt(request.nextUrl.searchParams.get('year') || '', 10) || new Date().getFullYear(); const start = `${year}-01-01`; const end = `${year}-12-31`; const { rows } = await db.query( `SELECT * FROM calendar_events WHERE date BETWEEN $1 AND $2 AND active = TRUE ORDER BY date`, [start, end] ); return NextResponse.json({ data: rows }); } catch (error: any) { console.error('GET /api/calendar_events error:', error); return NextResponse.json({ error: error.message || 'Failed to fetch events' }, { status: 500 }); } } export async function POST(request: NextRequest) { try { await requireRole('admin'); const body = await request.json(); const { date, title, type, description, color, active } = body; if (!date || !title || !type) { return NextResponse.json({ error: 'Missing required fields' }, { status: 400 }); } const { rows } = await db.query( `INSERT INTO calendar_events (date, title, type, description, color, active) VALUES ($1, $2, $3, $4, $5, $6) RETURNING *`, [date, title, type, description || null, color || '#E8A849', active !== false] ); return NextResponse.json({ data: rows[0] }); } catch (error: any) { if ((error as Error).message === 'Unauthorized') { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } console.error('POST /api/calendar_events error:', error); return NextResponse.json({ error: error.message || 'Failed to create event' }, { status: 500 }); } }