import { site, CATEGORIES } from "@/config/site";
import type { ArticleDetailData } from "@/types/article";

export function buildNewsArticleSchema(article: ArticleDetailData) {
  const url = `${site.url}/news/${article.slug}`;

  return {
    "@context": "https://schema.org",
    "@type": "NewsArticle",
    headline: article.title,
    description: article.summary,
    image: article.imageUrl ? [article.imageUrl] : undefined,
    datePublished: article.publishedAt,
    dateModified: article.publishedAt,
    author: {
      "@type": "Organization",
      name: site.name,
    },
    publisher: {
      "@type": "Organization",
      name: site.name,
      logo: {
        "@type": "ImageObject",
        url: `${site.url}/logo.png`,
      },
    },
    mainEntityOfPage: {
      "@type": "WebPage",
      "@id": url,
    },
    // Attribution to the original reporting — never the article body itself.
    isBasedOn: article.sourceUrl,
    keywords: article.tags.join(", "),
  };
}

export function buildBreadcrumbSchema(article: ArticleDetailData) {
  const categoryLabel = CATEGORIES.find((c) => c.slug === article.category)?.nameAr ?? article.category;

  return {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    itemListElement: [
      { "@type": "ListItem", position: 1, name: "الرئيسية", item: site.url },
      {
        "@type": "ListItem",
        position: 2,
        name: categoryLabel,
        item: `${site.url}/category/${article.category}`,
      },
      {
        "@type": "ListItem",
        position: 3,
        name: article.title,
        item: `${site.url}/news/${article.slug}`,
      },
    ],
  };
}
