import { desc, eq } from "drizzle-orm"; import Link from "next/link"; import { getTranslations } from "next-intl/server"; import { ContentCard, EmptyState } from "@/components/public/ui"; import { db, RadioGiveaways } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; export default async function RadioGiveawaysPage() { const t = await getTranslations("pages.radioGiveaways"); const giveaways = await db .select({ id: RadioGiveaways.id, title: RadioGiveaways.title, prize: RadioGiveaways.prize, prizeAmount: RadioGiveaways.prizeAmount, prizeCurrency: RadioGiveaways.prizeCurrency, startDate: RadioGiveaways.startDate, endDate: RadioGiveaways.endDate, }) .from(RadioGiveaways) .where(eq(RadioGiveaways.isActive, true)) .orderBy(desc(RadioGiveaways.startDate)) .limit(50) .catch(() => []); return (
{giveaways.length === 0 ? ( {t("empty")} ) : (
{giveaways.map((g) => { const id = g.id.toString(); const prizeStr = g.prize || (g.prizeAmount > 0 ? `${g.prizeAmount} ${g.prizeCurrency || "credits"}` : null); return (

🎁{" "} {g.title || t("giveawayLabel", { id })}

{prizeStr ? (

Prize: {prizeStr}

) : null}

{g.startDate ? `${formatDate(g.startDate, "date", "")} — ${g.endDate ? formatDate(g.endDate, "date", "") : "ongoing"}` : t("dateUnknown")}

); })}
)}
); }