import { NextRequest, NextResponse } from 'next/server'
import { getDb } from '@/server/db'
import { getUserIdFromRequest } from '../../_helpers/session'

export async function POST(request: NextRequest) {
    try {
        const userId = await getUserIdFromRequest(request)

        if (!userId) {
            return NextResponse.json(
                { ok: false, message: 'Unauthorized' },
                { status: 401 }
            )
        }

        const body = await request.json()
        const { nickname } = body

        if (!nickname || nickname.trim().length < 2 || nickname.trim().length > 12) {
            return NextResponse.json(
                { ok: false, message: 'Invalid nickname' },
                { status: 400 }
            )
        }

        const db = await getDb()

        const existing = await db.get<{ id: string }>(
            `SELECT user_id AS id FROM users WHERE display_name = ? AND user_id != ?`,
            [nickname.trim(), userId]
        )

        return NextResponse.json({
            ok: true,
            available: !existing,
        })
    } catch (error: any) {
        console.error('Failed to check nickname:', error)
        return NextResponse.json(
            { ok: false, message: error?.message || 'Failed to check nickname' },
            { status: 500 }
        )
    }
}

