Ensure uniform code formatting across components by aligning with the established code style. Adjust imports, indentation, and spacing to enhance readability and maintainability.
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import type { MetadataRoute } from "next";
|
|
import { CategoryService } from "@/services/category.service";
|
|
import { ContentService } from "@/services/content.service";
|
|
|
|
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
|
const baseUrl = process.env.NEXT_PUBLIC_APP_URL || "https://memegoat.local";
|
|
|
|
// Pages statiques
|
|
const routes: MetadataRoute.Sitemap = ["", "/trends", "/recent"].map(
|
|
(route) => ({
|
|
url: `${baseUrl}${route}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: "daily" as const,
|
|
priority: route === "" ? 1 : 0.8,
|
|
}),
|
|
);
|
|
|
|
// Catégories
|
|
try {
|
|
const categories = await CategoryService.getAll();
|
|
const categoryRoutes = categories.map((category) => ({
|
|
url: `${baseUrl}/category/${category.slug}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: "weekly" as const,
|
|
priority: 0.6,
|
|
}));
|
|
routes.push(...categoryRoutes);
|
|
} catch (_error) {
|
|
console.error("Sitemap: Failed to fetch categories");
|
|
}
|
|
|
|
// Mèmes (limité aux 100 derniers pour éviter un sitemap trop gros d'un coup)
|
|
try {
|
|
const contents = await ContentService.getRecent(100, 0);
|
|
const memeRoutes = contents.data.map((meme) => ({
|
|
url: `${baseUrl}/meme/${meme.slug}`,
|
|
lastModified: new Date(meme.updatedAt),
|
|
changeFrequency: "monthly" as const,
|
|
priority: 0.5,
|
|
}));
|
|
routes.push(...memeRoutes);
|
|
} catch (_error) {
|
|
console.error("Sitemap: Failed to fetch memes");
|
|
}
|
|
|
|
return routes;
|
|
}
|