13 lines
769 B
TypeScript
13 lines
769 B
TypeScript
import type { SitemapUrlInput } from '#sitemap/types'
|
|
import { explorerContentTable } from '~/db/schema';
|
|
import useDatabase from '~/composables/useDatabase';
|
|
|
|
export default defineSitemapEventHandler(() => {
|
|
const db = useDatabase();
|
|
const pages = db.select({ path: explorerContentTable.path, lastMod: explorerContentTable.timestamp, navigable: explorerContentTable.navigable, private: explorerContentTable.private }).from(explorerContentTable).all();
|
|
|
|
return pages.filter(e => e.navigable && !e.private && e.path.split('/').map((_, i, a) => a.slice(0, i).join('/')).every(p => !pages.find(_p => _p.path === p)?.private)).map(e => ({
|
|
loc: `/explore/${encodeURIComponent(e.path)}`,
|
|
lastmod: e.lastMod,
|
|
})) satisfies SitemapUrlInput[];
|
|
}) |