56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
import type { MetadataRoute } from "next";
|
|
import { prisma } from "@/lib/prisma";
|
|
import { absoluteUrl } from "@/lib/site";
|
|
|
|
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
|
const trips = await prisma.trip.findMany({
|
|
where: { status: { in: ["OPEN", "FULL"] } },
|
|
select: { id: true, updatedAt: true },
|
|
orderBy: { updatedAt: "desc" },
|
|
});
|
|
|
|
const now = new Date();
|
|
|
|
const staticEntries: MetadataRoute.Sitemap = [
|
|
{
|
|
url: absoluteUrl("/"),
|
|
lastModified: now,
|
|
changeFrequency: "daily",
|
|
priority: 1,
|
|
},
|
|
{
|
|
url: absoluteUrl("/trips"),
|
|
lastModified: now,
|
|
changeFrequency: "hourly",
|
|
priority: 0.9,
|
|
},
|
|
{
|
|
url: absoluteUrl("/register"),
|
|
lastModified: now,
|
|
changeFrequency: "yearly",
|
|
priority: 0.3,
|
|
},
|
|
{
|
|
url: absoluteUrl("/terms"),
|
|
lastModified: now,
|
|
changeFrequency: "yearly",
|
|
priority: 0.2,
|
|
},
|
|
{
|
|
url: absoluteUrl("/privacy"),
|
|
lastModified: now,
|
|
changeFrequency: "yearly",
|
|
priority: 0.2,
|
|
},
|
|
];
|
|
|
|
const tripEntries: MetadataRoute.Sitemap = trips.map((t) => ({
|
|
url: absoluteUrl(`/trips/${t.id}`),
|
|
lastModified: t.updatedAt,
|
|
changeFrequency: "daily",
|
|
priority: 0.8,
|
|
}));
|
|
|
|
return [...staticEntries, ...tripEntries];
|
|
}
|