Feature/wrap logging * feat: change all logging to go through our own logger function so that we can control log levels * move packages/trpc to using our own logger * merge Approved-by: Linus Flood
36 lines
1022 B
TypeScript
36 lines
1022 B
TypeScript
import { createLogger } from "@scandic-hotels/common/logger/createLogger"
|
|
|
|
import { env } from "@/env/server"
|
|
|
|
import { getLastUpdated, getSitemapIds } from "@/utils/sitemap"
|
|
|
|
export const dynamic = "force-dynamic"
|
|
|
|
const sitemapLogger = createLogger("sitemap")
|
|
export async function GET() {
|
|
sitemapLogger.debug(`Fetching sitemap`)
|
|
|
|
const lastUpdated = await getLastUpdated()
|
|
|
|
const sitemaps = await getSitemapIds()
|
|
|
|
if (!sitemaps || sitemaps.length === 0) {
|
|
return new Response("No sitemaps found", { status: 404 })
|
|
}
|
|
|
|
sitemapLogger.debug(`Sitemaps retrieved: ${sitemaps.length}`)
|
|
|
|
const urls = sitemaps.map(
|
|
(id) => `<sitemap>
|
|
<loc>${env.PUBLIC_URL}/sitemap-${id}.xml</loc>
|
|
<lastmod>${lastUpdated}</lastmod>
|
|
</sitemap>`
|
|
)
|
|
|
|
const sitemapIndexXML = `<?xml version="1.0" encoding="UTF-8"?>\n<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">${urls.join("")}\n</sitemapindex>`
|
|
|
|
return new Response(sitemapIndexXML, {
|
|
headers: { "Content-Type": "application/xml" },
|
|
})
|
|
}
|