Files
guanwang/server/api/admin/media/[id]/restore.post.ts

17 lines
1.1 KiB
TypeScript

import { moveMediaFiles, serializeMedia, type MediaAssetRow } from '../../../../utils/media'
import { useDatabase } from '../../../../utils/db'
export default defineEventHandler(async (event) => {
const user = await requireAdmin(event)
const id = Number(getRouterParam(event, 'id'))
if (!Number.isSafeInteger(id) || id < 1) throw createError({ statusCode: 400, statusMessage: '无效的素材编号' })
const db = useDatabase()
const row = db.prepare("SELECT * FROM media_assets WHERE id = ? AND status = 'trash'").get(id) as MediaAssetRow | undefined
if (!row) throw createError({ statusCode: 404, statusMessage: '回收站中不存在该素材' })
await moveMediaFiles(row, 'restore')
const timestamp = new Date().toISOString()
db.prepare("UPDATE media_assets SET status = 'active', deleted_at = NULL, updated_at = ? WHERE id = ?").run(timestamp, id)
writeAuditLog(event, { operatorId: user.id, action: 'media.restore', entityType: 'media', entityKey: row.asset_key })
return { data: serializeMedia({ ...row, status: 'active', deleted_at: null, updated_at: timestamp }) }
})