Files
blogflare/src/routes/[slug]/+page.server.ts
T

49 lines
1.0 KiB
TypeScript

/* eslint-disable @typescript-eslint/no-explicit-any */
import { error } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';
import { renderMarkdown } from '$lib/markdown/renderer';
export const load: PageServerLoad = async ({ params, platform, parent }) => {
const db = platform?.env?.DB;
const slug = params.slug;
const { aliases } = await parent();
if (!db) {
error(500, '数据库未连接');
}
try {
const page = await db
.prepare(
`SELECT title, slug, content, published_at, updated_at
FROM pages
WHERE slug = ?`
)
.bind(slug)
.first<{
title: string;
slug: string;
content: string;
published_at: string;
updated_at: string;
}>();
if (!page) {
error(404, `该${aliases?.page || '页面'}不存在`);
}
return {
page: {
...page,
content: undefined,
htmlContent: renderMarkdown(page.content)
}
};
} catch (err: unknown) {
if ((err as any)?.status === 404) throw err;
console.error('Error loading page:', err);
error(500, '读取详情失败');
}
};