49 lines
1.0 KiB
TypeScript
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, '读取详情失败');
|
|
}
|
|
};
|