import type { Metadata } from "next";
import { db, supportTickets, desc } from "@epicure/db";
import { AdminSupportManager } from "@/components/admin/admin-support-manager";
import { getPublicUrl } from "@/lib/storage";
import { requireFullAdminPage } from "@/lib/require-admin-page";

export const metadata: Metadata = {};

export default async function AdminSupportPage() {
  await requireFullAdminPage();
  const rows = await db.query.supportTickets.findMany({
    orderBy: desc(supportTickets.createdAt),
    with: {
      attachments: true,
      user: { columns: { email: true, username: true } },
    },
  });

  return (
    <div className="space-y-6">
      <div>
        <h1 className="text-2xl font-bold tracking-tight">Support Tickets</h1>
        <p className="text-muted-foreground text-sm mt-1">
          Bug reports, suggestions, and questions submitted through the app.
        </p>
      </div>
      <AdminSupportManager
        initialTickets={rows.map((r) => ({
          id: r.id,
          userEmail: r.user.email,
          username: r.user.username,
          type: r.type,
          title: r.title,
          description: r.description,
          status: r.status,
          giteaIssueUrl: r.giteaIssueUrl,
          giteaError: r.giteaError,
          createdAt: r.createdAt.toISOString(),
          attachments: r.attachments.map((a) => ({
            id: a.id,
            contentType: a.contentType,
            url: getPublicUrl(a.storageKey),
          })),
        }))}
      />
    </div>
  );
}
