38 lines
924 B
TypeScript
38 lines
924 B
TypeScript
import { getDatabase } from '~/server/utils/database'
|
|
import { getRouterParam, createError } from 'h3'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
try {
|
|
const db = await getDatabase()
|
|
const slug = getRouterParam(event, 'slug')
|
|
|
|
if (!slug) {
|
|
throw createError({
|
|
statusCode: 400,
|
|
statusMessage: 'Sermon slug is required'
|
|
})
|
|
}
|
|
|
|
const sermon = db.prepare('SELECT * FROM sermons WHERE slug = ?').get(slug) as any
|
|
|
|
if (!sermon) {
|
|
throw createError({
|
|
statusCode: 404,
|
|
statusMessage: 'Sermon not found'
|
|
})
|
|
}
|
|
|
|
// Parse JSON fields
|
|
return {
|
|
...sermon,
|
|
bibleReferences: sermon.bible_references ? JSON.parse(sermon.bible_references) : []
|
|
}
|
|
} catch (error) {
|
|
console.error('Error loading sermon:', error)
|
|
throw createError({
|
|
statusCode: 500,
|
|
statusMessage: 'Failed to load sermon'
|
|
})
|
|
}
|
|
})
|