80 lines
2.1 KiB
TypeScript
80 lines
2.1 KiB
TypeScript
import { MetadataRoute } from 'next';
|
|
import prisma from '@/lib/prisma';
|
|
|
|
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
|
const baseUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://afroprenariat.com';
|
|
|
|
// 1. Static routes
|
|
const staticRoutes = [
|
|
{
|
|
url: `${baseUrl}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'daily' as const,
|
|
priority: 1.0,
|
|
},
|
|
{
|
|
url: `${baseUrl}/annuaire`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'daily' as const,
|
|
priority: 0.9,
|
|
},
|
|
{
|
|
url: `${baseUrl}/blog`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'daily' as const,
|
|
priority: 0.9,
|
|
},
|
|
{
|
|
url: `${baseUrl}/afrolife`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'weekly' as const,
|
|
priority: 0.8,
|
|
},
|
|
{
|
|
url: `${baseUrl}/cgu`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'yearly' as const,
|
|
priority: 0.3,
|
|
},
|
|
{
|
|
url: `${baseUrl}/cgv`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'yearly' as const,
|
|
priority: 0.3,
|
|
},
|
|
];
|
|
|
|
try {
|
|
// 2. Fetch all active businesses
|
|
const businesses = await prisma.business.findMany({
|
|
where: { isActive: true, isSuspended: false },
|
|
select: { id: true, slug: true, updatedAt: true },
|
|
});
|
|
|
|
const businessRoutes = businesses.map((business) => ({
|
|
url: `${baseUrl}/annuaire/${business.slug || business.id}`,
|
|
lastModified: business.updatedAt,
|
|
changeFrequency: 'weekly' as const,
|
|
priority: 0.8,
|
|
}));
|
|
|
|
// 3. Fetch all blog posts
|
|
const blogPosts = await prisma.blogPost.findMany({
|
|
select: { id: true, slug: true, updatedAt: true },
|
|
});
|
|
|
|
const blogRoutes = blogPosts.map((post) => ({
|
|
url: `${baseUrl}/blog/${post.slug || post.id}`,
|
|
lastModified: post.updatedAt,
|
|
changeFrequency: 'monthly' as const,
|
|
priority: 0.7,
|
|
}));
|
|
|
|
return [...staticRoutes, ...businessRoutes, ...blogRoutes];
|
|
} catch (error) {
|
|
console.error("Error generating sitemap:", error);
|
|
// Fallback to only static routes if DB connection fails
|
|
return staticRoutes;
|
|
}
|
|
}
|