import type { MetadataRoute } from "next"; import { defineQuery } from "next-sanity"; import { sanity } from "@/lib/sanity"; const SITEMAP_ARTISTS_QUERY = defineQuery( `*[_type == "artist" && defined(slug.current)]{ "slug": slug.current, _updatedAt }`, ); const SITEMAP_RELEASES_QUERY = defineQuery( `*[_type == "release" && defined(slug.current)]{ "slug": slug.current, _updatedAt }`, ); const SITEMAP_COMPOSERS_QUERY = defineQuery( `*[_type == "composer" && defined(slug.current)]{ "slug": slug.current, _updatedAt }`, ); const SITEMAP_WORKS_QUERY = defineQuery( `*[_type == "work" && defined(slug.current)]{ "slug": slug.current, _updatedAt }`, ); export default async function sitemap(): Promise { const baseUrl = "https://trptk.com"; const [artists, releases, composers, works] = await Promise.all([ sanity.fetch<{ slug: string; _updatedAt: string }[]>(SITEMAP_ARTISTS_QUERY), sanity.fetch<{ slug: string; _updatedAt: string }[]>(SITEMAP_RELEASES_QUERY), sanity.fetch<{ slug: string; _updatedAt: string }[]>(SITEMAP_COMPOSERS_QUERY), sanity.fetch<{ slug: string; _updatedAt: string }[]>(SITEMAP_WORKS_QUERY), ]); const staticPages: MetadataRoute.Sitemap = [ { url: baseUrl, changeFrequency: "weekly", priority: 1 }, { url: `${baseUrl}/artists`, changeFrequency: "weekly", priority: 0.8 }, { url: `${baseUrl}/releases`, changeFrequency: "weekly", priority: 0.8 }, { url: `${baseUrl}/composers`, changeFrequency: "weekly", priority: 0.8 }, { url: `${baseUrl}/concerts`, changeFrequency: "weekly", priority: 0.8 }, ]; const artistPages: MetadataRoute.Sitemap = artists.map((a) => ({ url: `${baseUrl}/artist/${a.slug}`, lastModified: a._updatedAt, changeFrequency: "monthly", priority: 0.7, })); const releasePages: MetadataRoute.Sitemap = releases.map((r) => ({ url: `${baseUrl}/release/${r.slug}`, lastModified: r._updatedAt, changeFrequency: "monthly", priority: 0.7, })); const composerPages: MetadataRoute.Sitemap = composers.map((c) => ({ url: `${baseUrl}/composer/${c.slug}`, lastModified: c._updatedAt, changeFrequency: "monthly", priority: 0.6, })); const workPages: MetadataRoute.Sitemap = works.map((w) => ({ url: `${baseUrl}/work/${w.slug}`, lastModified: w._updatedAt, changeFrequency: "monthly", priority: 0.5, })); return [...staticPages, ...artistPages, ...releasePages, ...composerPages, ...workPages]; }