import { db } from '$lib/server/db'; import { blogArticles } from '$lib/server/db/schema'; import { isAdmin } from '$lib/server/auth'; import { renderMarkdown } from '$lib/server/markdown'; import { eq } from 'drizzle-orm'; import type { PageServerLoad } from './$types.js'; import { error, redirect } from '@sveltejs/kit'; export const load: PageServerLoad = async (event) => { const [article] = await db .select() .from(blogArticles) .where(eq(blogArticles.slug, event.params.slug)); if (!article) { return error(404, { message: 'Article not found' }); } const admin = isAdmin(event); if (article.status !== 'published') { if (!admin) { return error(404, { message: 'Article not found' }); } // Drafts are only ever viewed/edited through the editor. return redirect(303, `/blog/${article.slug}/edit`); } return { blogArticle: article, contentHtml: renderMarkdown(article.content ?? ''), isAdmin: admin }; }; export const actions = {};