import Image from "next/image";
import Link from "next/link";
import type { Metadata } from "next";
import { notFound } from "next/navigation";
import { db } from "@/lib/db";
import { getPublicTenant,tenantUrl } from "@/lib/public-tenant";

async function getPost(host:string,slug:string){const tenant=await getPublicTenant(host);if(!tenant)return null;const post=await db.blogPost.findFirst({where:{tenantId:tenant.id,slug,published:true,publishedAt:{lte:new Date()}}});return post?{tenant,post}:null}
export async function generateMetadata({params}:{params:Promise<{host:string;slug:string}>}):Promise<Metadata>{const {host,slug}=await params;const data=await getPost(host,slug);if(!data)return{};const {tenant,post}=data;const url=`${tenantUrl(tenant)}/blog/${post.slug}`;return{title:post.seoTitle||post.title,description:post.metaDescription||post.excerpt,alternates:{canonical:url},openGraph:{title:post.seoTitle||post.title,description:post.metaDescription||post.excerpt,url,type:"article",publishedTime:post.publishedAt?.toISOString(),modifiedTime:post.updatedAt.toISOString(),images:post.coverImageUrl?[{url:post.coverImageUrl,alt:post.title}]:[]}}}
export default async function BlogPostPage({params}:{params:Promise<{host:string;slug:string}>}){const {host,slug}=await params;const data=await getPost(host,slug);if(!data)notFound();const {tenant,post}=data;const base=`/site/${encodeURIComponent(host)}`;const paragraphs=post.content.split(/\r?\n\s*\r?\n/).filter(Boolean);const schema={"@context":"https://schema.org","@type":"BlogPosting",headline:post.title,description:post.metaDescription||post.excerpt,datePublished:post.publishedAt?.toISOString(),dateModified:post.updatedAt.toISOString(),image:post.coverImageUrl||undefined,author:{"@type":"Organization",name:tenant.name},publisher:{"@type":"Organization",name:tenant.name},mainEntityOfPage:`${tenantUrl(tenant)}/blog/${post.slug}`};return <main className="blog-article"><script type="application/ld+json" dangerouslySetInnerHTML={{__html:JSON.stringify(schema)}}/><article><Link className="blog-back" href={`${base}/blog`}>← Voltar ao blog</Link><p className="eyebrow">{post.category}</p><h1>{post.title}</h1><p className="blog-lead">{post.excerpt}</p><small>Publicado em {post.publishedAt?.toLocaleDateString("pt-BR",{day:"2-digit",month:"long",year:"numeric"})}</small>{post.coverImageUrl&&<Image className="article-cover" src={post.coverImageUrl} alt={post.title} width={1200} height={675} priority/>}<div className="article-content">{paragraphs.map((paragraph,index)=><p key={index}>{paragraph}</p>)}</div></article></main>}
