import { NextRequest, NextResponse } from 'next/server' import { auth } from '@/auth' import { getEvents, createEvent } from '@/lib/caldav-client' export async function GET(request: NextRequest) { const session = await auth() if (!session?.user || !session.accessToken) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } const { searchParams } = request.nextUrl const start = searchParams.get('start') const end = searchParams.get('end') const calendarId = searchParams.get('calendarId') || undefined if (!start || !end) { return NextResponse.json( { error: 'start and end query parameters are required' }, { status: 400 } ) } try { const events = await getEvents(session.accessToken, start, end, calendarId) return NextResponse.json(events) } catch (error) { console.error('Failed to fetch events:', error) return NextResponse.json( { error: 'Failed to fetch events' }, { status: 500 } ) } } export async function POST(request: NextRequest) { const session = await auth() if (!session?.user || !session.accessToken) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } try { const body = await request.json() const { title, start, end, allDay, location, description, calendarUrl, recurrence } = body if (!title || !start || !end || !calendarUrl) { return NextResponse.json( { error: 'title, start, end, and calendarUrl are required' }, { status: 400 } ) } const event = await createEvent(session.accessToken, { title, start, end, allDay, location, description, calendarUrl, recurrence, }) return NextResponse.json(event, { status: 201 }) } catch (error) { console.error('Failed to create event:', error) return NextResponse.json( { error: 'Failed to create event' }, { status: 500 } ) } }