import type { Metadata } from "next";
import { notFound } from "next/navigation";
import { BLOG_POSTS, BlogPost } from "@/content/blog";
import { blogService } from "@/lib/blog-service";
import { BlogCategoryView } from "@/components/blog/blog-category-view";
import { BLOG_CATEGORIES_LIST } from "@/lib/blog-categories-data";

export const revalidate = 60;

interface CategoryPageProps {
  params: Promise<{ category: string }>;
}

export function generateStaticParams() {
  return BLOG_CATEGORIES_LIST.map((c) => ({
    category: c.slug,
  }));
}

export async function generateMetadata({
  params,
}: CategoryPageProps): Promise<Metadata> {
  const { category } = await params;
  const info = BLOG_CATEGORIES_LIST.find((c) => c.slug === category);
  if (!info) {
    return { title: "Category not found", robots: { index: false, follow: false } };
  }

  return {
    title: `${info.title} — Quto AI Blog`,
    description: info.description,
    alternates: { canonical: `/blog/category/${info.slug}` },
    openGraph: {
      title: `${info.title} — Quto AI Blog`,
      description: info.description,
      url: `/blog/category/${info.slug}`,
      type: "website",
    },
  };
}

export default async function BlogCategoryPage({ params }: CategoryPageProps) {
  const { category } = await params;
  const info = BLOG_CATEGORIES_LIST.find((c) => c.slug === category);
  if (!info) notFound();

  let posts: BlogPost[] = BLOG_POSTS;
  try {
    const mongoPosts = await blogService.getPublishedPosts({ limit: 100 });
    if (mongoPosts && mongoPosts.length > 0) {
      posts = mongoPosts as unknown as BlogPost[];
    }
  } catch {}

  return <BlogCategoryView categoryInfo={info} posts={posts} />;
}
