import { auth } from "@clerk/nextjs/server"; import { NextRequest, NextResponse } from "next/server"; import { getDatabase } from "@/lib/database"; import { ensureUserSynced } from "@/lib/sync-user"; import log from "@/lib/logger"; import { checkInSchema } from "@/lib/validation/schemas"; import { validateRequestBody, validationErrorResponse, } from "@/lib/validation/helpers"; export async function POST(req: NextRequest) { try { const { userId } = await auth(); if (!userId) return new NextResponse("Unauthorized", { status: 401 }); const db = await getDatabase(); // Ensure user exists in DB (sync from Clerk if needed) await ensureUserSynced(userId, db); // Check if already checked in const activeCheckIn = await db.getActiveCheckIn(userId); if (activeCheckIn) { return new NextResponse("Already checked in", { status: 400 }); } const body = await req.json(); const { type = "gym", notes } = body; const attendance = await db.checkIn(userId, type, notes); return NextResponse.json(attendance); } catch (error) { log.error("Failed to check in", error); return new NextResponse("Internal Server Error", { status: 500 }); } }