templates2.Store.Next/app/sitemap.ts
w4c-templates bb75e7c742
Some checks are pending
CI / quality (push) Waiting to run
chore(template): publish Store.Next
2026-10-11 23:24:13 +03:00

25 lines
1.2 KiB
TypeScript

import type { MetadataRoute } from 'next';
import { db } from '@/lib/server/db';
export const dynamic = 'force-dynamic';
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const base = (process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000').replace(/\/$/, '');
const now = new Date();
const staticPages: MetadataRoute.Sitemap = [
{ url: `${base}/`, lastModified: now, changeFrequency: 'weekly', priority: 1 },
{ url: `${base}/shop`, lastModified: now, changeFrequency: 'daily', priority: 0.9 },
{ url: `${base}/pricing`, lastModified: now, changeFrequency: 'monthly', priority: 0.6 },
{ url: `${base}/legal/privacy`, lastModified: now, changeFrequency: 'yearly', priority: 0.3 },
{ url: `${base}/legal/terms`, lastModified: now, changeFrequency: 'yearly', priority: 0.3 },
];
let products: MetadataRoute.Sitemap = [];
try {
const rows = await db.product.findMany({ where: { active: true }, select: { slug: true } });
products = rows.map((p) => ({ url: `${base}/shop/${p.slug}`, lastModified: now, changeFrequency: 'weekly', priority: 0.7 }));
} catch {
products = [];
}
return [...staticPages, ...products];
}