import { NextRequest, NextResponse } from 'next/server'
import { getDb } from '@/server/db'
import {
    fetchRankingData,
    type RankPeriod,
    type RankType,
} from '@/server/ranking/fetchRankingData'

export const runtime = 'nodejs'
export const dynamic = 'force-dynamic'

export async function GET(request: NextRequest) {
    try {
        const { searchParams } = new URL(request.url)
        const type = (searchParams.get('type') || 'gift') as RankType
        const period = (searchParams.get('period') || 'day') as RankPeriod

        const db = await getDb()
        const data = await fetchRankingData(db, type, period)

        return NextResponse.json({
            ok: true,
            data,
        })
    } catch (error: unknown) {
        console.error('Failed to fetch rank data:', error)
        return NextResponse.json(
            {
                ok: false,
                message: error instanceof Error ? error.message : 'Failed to fetch rank data',
            },
            { status: 500 }
        )
    }
}
