feat: 初始化慧遇书院官网一期
This commit is contained in:
16
server/api/admin/site/revisions/[version]/restore.post.ts
Normal file
16
server/api/admin/site/revisions/[version]/restore.post.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { useDatabase } from '../../../../../utils/db'
|
||||
import { siteDocumentSchema } from '../../../../../utils/site-schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const user = await requireAdmin(event)
|
||||
const version = Number(getRouterParam(event, 'version'))
|
||||
if (!Number.isSafeInteger(version) || version < 1) throw createError({ statusCode: 400, statusMessage: '无效的版本号' })
|
||||
const db = useDatabase()
|
||||
const revision = db.prepare(`SELECT snapshot_json FROM revisions WHERE entity_type = 'site_document' AND entity_key = 'website' AND version = ?`).get(version) as { snapshot_json: string } | undefined
|
||||
if (!revision) throw createError({ statusCode: 404, statusMessage: '历史版本不存在' })
|
||||
const snapshot = siteDocumentSchema.parse(JSON.parse(revision.snapshot_json))
|
||||
const timestamp = new Date().toISOString()
|
||||
db.prepare('UPDATE site_documents SET draft_json = ?, updated_by = ?, updated_at = ? WHERE document_key = ?').run(JSON.stringify(snapshot), user.id, timestamp, 'website')
|
||||
writeAuditLog(event, { operatorId: user.id, action: 'revision.restore_to_draft', entityType: 'site_document', entityKey: 'website', metadata: { version } })
|
||||
return { data: snapshot, restoredVersion: version, updatedAt: timestamp }
|
||||
})
|
||||
Reference in New Issue
Block a user