PronounsPage/server/api/blog/index.get.ts
Valentyne Stigloher 10180aa6a3 (refactor) use #shared alias instead of ~~/shared
the #shared alias used by Nuxt cannot be easily disabled and to prevent breackage with jiti, we make use of it
2025-08-17 18:56:02 +02:00

44 lines
1.2 KiB
TypeScript

import type { Post } from '#shared/blog/metadata.ts';
import { getPosts } from '~~/server/blog.ts';
import { getLocale, loadConfig } from '~~/server/data.ts';
export default defineEventHandler(async (event) => {
const config = await loadConfig(getLocale(event));
if (!config.links.enabled || !config.links.blog) {
throw createError({
status: 404,
statusMessage: 'Not Found',
});
}
const query = getQuery(event);
const posts = await getPosts(config);
return posts.filter((post) => {
if (query.shortcuts !== undefined) {
if (!config.blog || !config.blog.shortcuts) {
return false;
}
if (!Object.values(config.blog.shortcuts).includes(post.slug)) {
return false;
}
}
if (query.slugs !== undefined) {
const slugs = Array.isArray(query.slugs) ? query.slugs : [query.slugs];
if (!slugs.includes(post.slug)) {
return false;
}
}
return true;
}).map((post): Post => ({
slug: post.slug,
title: post.title,
date: post.date,
authors: post.authors,
hero: post.hero,
}));
});