import { db } from "@/db"; import { forms } from "@/db/schema"; import Link from "next/link"; import { Button } from "@/components/ui/button"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Badge } from "@/components/ui/badge"; import { Plus, Trash2 } from "lucide-react"; import { redirect } from "next/navigation"; import { deleteForm } from "@/app/actions/form"; import { getServerSession } from "next-auth"; import { authOptions } from "@/app/api/auth/[...nextauth]/route"; export const dynamic = "force-dynamic"; export default async function AdminFormsPage() { const session = await getServerSession(authOptions); const adminIds = (process.env.ADMIN_DISCORD_IDS ?? "") .split(",") .map((s) => s.trim()) .filter(Boolean); const discordId = (session?.user as any)?.discordId; if (!discordId || !adminIds.includes(discordId)) { redirect("/"); } const formsList = await db.query.forms.findMany({ orderBy: (f, { desc }) => [desc(f.createdAt)], }); return (

Forms

Manage your custom forms and view submissions.

{ "use server"; const [newForm] = await db.insert(forms).values({ title: "New Form", description: "", }).returning(); redirect(`/admin/form/${newForm.id}`); }}>
Title Status Created Actions {formsList.length === 0 ? ( No forms found. Create one to get started. ) : ( formsList.map((form) => ( {form.title} {form.isOpen ? ( Open ) : ( Closed )} {form.createdAt ? new Date(form.createdAt).toLocaleDateString() : 'N/A'}
)) )}
); }