import { sql } from "drizzle-orm"; import { Dice5, PlusIcon, Trash2 } from "lucide-react"; import { ErrorBoundary } from "next/dist/client/components/error-boundary"; import Link from "next/link"; import { redirect } from "next/navigation"; import { ErrorModal } from "@/components/error"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarProvider, SidebarTrigger, } from "@/components/ui/sidebar"; import { adminCheck } from "@/lib/auth"; import { db } from "@/lib/db"; import { endgameSubmissions } from "@/lib/db/schema"; import { getEndgameConfig, random, wipe } from "../api"; import { BulkDeleteButton, CalendarButton, LimitManager, SubmissionList, Watcher, } from "./client"; export default async function AdminLayout({ modal, children, }: { children: React.ReactNode; modal: React.ReactNode; }) { if (!(await adminCheck())) redirect(`/login?next=${encodeURIComponent("/rubgram/admin")}`); const subs = await db .select({ id: endgameSubmissions.id, name: endgameSubmissions.name, checked: endgameSubmissions.checked, publicQueue: sql` ${endgameSubmissions.queue} - ( select count(*)::int from ${endgameSubmissions} e2 where (e2.checked and e2.queue < endgame.submissions.queue) or e2.deleted ) `, paid: endgameSubmissions.paid, deleted: endgameSubmissions.deleted, }) .from(endgameSubmissions) .orderBy(endgameSubmissions.deleted, endgameSubmissions.id); const config = await getEndgameConfig(); return (
Admin
คุณมั่นใจที่จะล้างข้อมูลทั้งหมดใช่ไหม? การกระทำนี้ไม่สามารถย้อนกลับได้ เราจะลบบัญชีของท่านออกจากระบบ ยกเลิก ดำเนินการต่อ
รับกรรมแทนทางบ้าน การตั้งค่า c + (s.paid && !s.deleted ? 1 : 0), 0, )} />
{modal} {children}
); }