33 lines
888 B
TypeScript
33 lines
888 B
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
|
|
import { error } from '@sveltejs/kit';
|
|
import type { PageServerLoad } from './$types';
|
|
|
|
export const load: PageServerLoad = async ({ platform }) => {
|
|
const db = platform?.env?.DB;
|
|
if (!db) throw error(500, '数据库未连接');
|
|
try {
|
|
const { results } = await db
|
|
.prepare(
|
|
`SELECT s.id, s.name, s.slug, s.description, COUNT(p.id) AS post_count
|
|
FROM series s
|
|
LEFT JOIN posts p ON p.series_id = s.id
|
|
GROUP BY s.id, s.name, s.slug, s.description
|
|
ORDER BY s.name COLLATE NOCASE ASC`
|
|
)
|
|
.all();
|
|
return {
|
|
series: results as unknown as Array<{
|
|
id: number;
|
|
name: string;
|
|
slug: string;
|
|
description: string | null;
|
|
post_count: number;
|
|
}>
|
|
};
|
|
} catch (err: any) {
|
|
console.error('Error fetching public series list:', err);
|
|
throw error(500, '读取系列列表失败');
|
|
}
|
|
};
|