import { NextRequest, NextResponse } from 'next/server'
import { getDb } from '@/server/db'

export async function GET(request: NextRequest) {
    try {
        const searchParams = request.nextUrl.searchParams
        const singleUserId = searchParams.get('userId')?.trim()
        if (singleUserId) {
            const db = await getDb()
            const row = await db.get<{
                id: string
                displayName: string
                avatar: string | null
                displayId: string | null
            }>(
                `SELECT user_id AS id, display_name AS displayName, avatar_url AS avatar, display_id AS displayId
                 FROM users WHERE user_id = ? LIMIT 1`,
                [singleUserId]
            )
            if (!row) {
                return NextResponse.json({ ok: false, message: 'not_found' }, { status: 404 })
            }
            const trimmedDisplay = String(row.displayId || '').trim()
            const profilePathSegment = trimmedDisplay || row.id
            return NextResponse.json({
                ok: true,
                data: {
                    id: row.id,
                    displayName: row.displayName,
                    avatar: row.avatar,
                    displayId: row.displayId,
                    profilePathSegment,
                },
            })
        }

        const idsParam = searchParams.get('ids')
        if (!idsParam) {
            return NextResponse.json({ users: [] }, { status: 200 })
        }
        const userIds = idsParam.split(',').filter((id) => id.trim())
        if (userIds.length === 0) {
            return NextResponse.json({ users: [] }, { status: 200 })
        }
        const db = await getDb()
        const placeholders = userIds.map(() => '?').join(',')
        const users = await db.all<{ id: string; displayName: string; avatar: string | null; vipLevel: string }>( 
            `SELECT user_id AS id, display_name AS displayName, avatar_url AS avatar,
                    'none' AS vipLevel FROM users WHERE user_id IN (${placeholders})`,
            userIds
        )
        return NextResponse.json({ users: users || [] }, { status: 200 })
    } catch (error) {
        console.error('Failed to fetch users info:', error)
        return NextResponse.json({ error: 'Failed to fetch users info' }, { status: 500 })
    }
}

