import { asc } from "drizzle-orm"; import NextImage from "next/image"; import { getTranslations } from "next-intl/server"; import { createRadioBanner, deleteRadioBanner, updateRadioBanner, } from "@/actions/admin-radio-extra"; import { StatusCard } from "@/components/admin/dashboard"; import { Button } from "@/components/ui/button"; import { db, RadioBanners } from "@/lib/db"; import { formatDate } from "@/lib/format-date"; type Banner = { id: bigint; userId: bigint; imagePath: string; title: string | null; description: string | null; sortOrder: number; isActive: boolean; createdAt: Date | null; }; export default async function AdminRadioBannersPage() { const t = await getTranslations("pages.admin.radio"); let banners: Banner[] = []; let dbError = false; try { banners = await db .select({ id: RadioBanners.id, userId: RadioBanners.userId, imagePath: RadioBanners.imagePath, title: RadioBanners.title, description: RadioBanners.description, sortOrder: RadioBanners.sortOrder, isActive: RadioBanners.isActive, createdAt: RadioBanners.createdAt, }) .from(RadioBanners) .orderBy(asc(RadioBanners.sortOrder), asc(RadioBanners.id)); } catch { dbError = true; banners = []; } const activeCount = banners.filter((b) => b.isActive).length; const hiddenCount = banners.length - activeCount; return (
{dbError ? (

{t("banners.dbError")}

) : (
0 ? "ok" : "neutral"} icon="✅" /> 0 ? "warn" : "neutral"} icon="🚫" />
)}

{t("banners.addBanner")}