import { NextRequest, NextResponse } from 'next/server'
import { getDb } from '@/server/db'
import { INDEX_EVENT_BANNERS_SQL } from '@/server/userAuthSql'

function formatBannerDate(ts: number | null | undefined): string {
    if (ts == null || !Number.isFinite(Number(ts))) return ''
    try {
        return new Date(Number(ts) * 1000).toLocaleDateString()
    } catch {
        return ''
    }
}

export async function GET(_request: NextRequest) {
    try {
        const db = await getDb()
        const rows = await db.all<{
            event_id: string
            title: string
            subtitle: string | null
            banner_url: string
            redirect_url: string | null
            created_at: number
        }>(INDEX_EVENT_BANNERS_SQL.selectActive)
        return NextResponse.json({
            ok: true,
            banners: rows.map((b) => ({
                id: b.event_id,
                title: b.title,
                subtitle: b.subtitle || '',
                date: formatBannerDate(b.created_at),
                image: b.banner_url,
                badge: null as 'live' | 'alarm' | null,
                url: b.redirect_url || null,
            })),
        })
    } catch (error: any) {
        console.error('Failed to fetch event banners:', error)
        return NextResponse.json(
            { ok: false, message: error?.message || 'Failed to fetch event banners' },
            { status: 500 }
        )
    }
}
