import { notFound } from "next/navigation";
import { PostForm } from "@/admin/components/PostForm";
import { AdminAutoLayout } from "@/admin/layout/AdminAutoLayout";
import { requirePermission } from "@/lib/auth";
import { prisma } from "@/lib/prisma";

type PageProps = {
  params: Promise<{ id: string }>;
  searchParams: Promise<{ error?: string }>;
};

const errorMessages: Record<string, string> = {
  required: "Please enter a title, excerpt, and content. Excerpt and content must be at least 10 characters."
};

export default async function EditPostPage({ params, searchParams }: PageProps) {
  await requirePermission("posts");
  const [{ id }, query] = await Promise.all([params, searchParams]);
  const [post, categories] = await Promise.all([
    prisma.post.findUnique({ where: { id } }),
    prisma.category.findMany({ orderBy: { name: "asc" } })
  ]);

  if (!post) {
    notFound();
  }

  return (
    <AdminAutoLayout
      description="Update article content, SEO, and publishing settings."
      error={query.error}
      errorMessages={errorMessages}
      eyebrow="Editorial"
      title="Edit article"
      width="wide"
    >
      <PostForm categories={categories} post={post} />
    </AdminAutoLayout>
  );
}
