feat: 初始化慧遇书院官网一期
This commit is contained in:
19
server/api/admin/site/index.put.ts
Normal file
19
server/api/admin/site/index.put.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { requireAdmin } from '../../../utils/auth'
|
||||
import { writeAuditLog } from '../../../utils/audit'
|
||||
import { useDatabase } from '../../../utils/db'
|
||||
import { siteDocumentSchema } from '../../../utils/site-schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const user = await requireAdmin(event)
|
||||
const parsed = siteDocumentSchema.safeParse(await readBody(event))
|
||||
if (!parsed.success) {
|
||||
throw createError({ statusCode: 422, statusMessage: '内容校验失败', data: { issues: parsed.error.issues } })
|
||||
}
|
||||
const document = parsed.data
|
||||
const timestamp = new Date().toISOString()
|
||||
const db = useDatabase()
|
||||
db.prepare('UPDATE site_documents SET draft_json = ?, updated_by = ?, updated_at = ? WHERE document_key = ?')
|
||||
.run(JSON.stringify(document), user.id, timestamp, 'website')
|
||||
writeAuditLog(event, { operatorId: user.id, action: 'save_draft', entityType: 'site_document', entityKey: 'website' })
|
||||
return { data: document, updatedAt: timestamp }
|
||||
})
|
||||
Reference in New Issue
Block a user