import { getAllTracksApi } from '~/src/lib/songwhipApi/tracks/getAll';
import getBaseUrl from '~/src/lib/utils/getBaseUrl';

const TOTAL_ITEMS = 500;
const TTL_SECS = 60 * 5; // 5 mins
const CHANGE_FREQ = 'weekly';
const PRIORITY = '0.7';

// noop
const SitemapPage = () => null;

SitemapPage.getInitialProps = async ({ req, res }) => {
  if (typeof window === 'undefined') {
    const baseUrl = getBaseUrl(req);
    const toUrl = (path: string) => baseUrl + path;

    const { items } = await getAllTracksApi({
      limit: TOTAL_ITEMS,
    });

    const lines = [
      '<?xml version="1.0" encoding="UTF-8"?>',
      '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
      ...items.map(
        ({ pagePath }) => `<url>
  <loc>${toUrl(pagePath)}</loc>
  <changefreq>${CHANGE_FREQ}</changefreq>
  <priority>${PRIORITY}</priority>
</url>`
      ),
      '</urlset>',
    ];

    res.setHeader(
      'Cache-Control',
      `s-maxage=${TTL_SECS}, stale-while-revalidate`
    );

    res.setHeader('Content-Type', 'application/xml');
    res.statusCode = 200;

    res.end(lines.join('\n'));
  }

  return { done: true };
};

export default SitemapPage;
