import { and, eq, getTableColumns, not, sql } from "drizzle-orm"; import { ArrowRight } from "lucide-react"; import type { Metadata } from "next"; import Link from "next/link"; import TierlistLogo from "#/logos/tierlist.webp"; import { HorizontalDiv } from "@/components/horizontal"; import Image from "@/components/image"; import { SimpleTooltip } from "@/components/tooltip"; import { ScrollBar } from "@/components/ui/scroll-area"; import { db } from "@/lib/db"; import { tierlistTypes, tierlistVersions } from "@/lib/db/schema"; export const metadata: Metadata = { title: "จัดเทียร์ลิสต์", description: "ระบบจัดเทียร์ลิสต์ตัวละครของคอนเทนต์เอนเกม", }; export default async function TierlistSelectionPage() { const vers = await db .select({ ...getTableColumns(tierlistTypes), versions: sql<(typeof tierlistVersions.$inferSelect)[]>` COALESCE( json_agg( json_build_object( 'id', ${tierlistVersions.id}, 'name', ${tierlistVersions.name}, 'image', ${tierlistVersions.image} ) ORDER BY ${tierlistVersions.order} DESC) FILTER (WHERE ${tierlistVersions.id} IS NOT NULL), '[]' ) `.as("versions"), }) .from(tierlistTypes) .leftJoin( tierlistVersions, and( eq(tierlistVersions.type, tierlistTypes.id), not(tierlistVersions.hidden), ), ) .groupBy(tierlistTypes.id) .orderBy(tierlistTypes.id); return (