feat: pagine vetrina in SSR e sitemap runtime

This commit is contained in:
2026-07-05 17:11:20 +02:00
parent 3551fae132
commit 685ef4a36e
11 changed files with 30 additions and 16 deletions
+18
View File
@@ -0,0 +1,18 @@
import type { APIRoute } from 'astro';
import { getDb } from '../lib/db';
import { programs } from '../data/programs';
export const prerender = false;
const STATIC = ['/', '/about', '/contact', '/training', '/programs', '/blog'];
export const GET: APIRoute = ({ site }) => {
const base = (site ?? new URL('https://insanitylab.tielogic.xyz')).toString().replace(/\/$/, '');
const posts = getDb().prepare('SELECT slug FROM posts WHERE draft = 0').all() as { slug: string }[];
const urls = [
...STATIC,
...programs.map((p) => `/programs/${p.slug}`),
...posts.map((p) => `/blog/${p.slug}`),
];
const xml = `<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n${urls.map((u) => ` <url><loc>${base}${u}</loc></url>`).join('\n')}\n</urlset>`;
return new Response(xml, { headers: { 'Content-Type': 'application/xml' } });
};