32 行
1.0 KiB
JavaScript

import { inArray } from 'drizzle-orm'
import { useDB, schema } from '../../../utils/db.js'
import { requireAdmin } from '../../../utils/auth.js'
/**
* 批量操作:{ action: 'publish'|'unpublish'|'delete', ids: number[] }
*/
export default defineEventHandler(async (event) => {
requireAdmin(event)
const { action, ids } = await readBody(event)
if (!Array.isArray(ids) || ids.length === 0) {
throw createError({ statusCode: 422, message: 'ids 不能为空' })
}
const db = useDB()
switch (action) {
case 'publish':
db.update(schema.reviews).set({ published: true }).where(inArray(schema.reviews.id, ids)).run()
break
case 'unpublish':
db.update(schema.reviews).set({ published: false }).where(inArray(schema.reviews.id, ids)).run()
break
case 'delete':
db.delete(schema.reviews).where(inArray(schema.reviews.id, ids)).run()
break
default:
throw createError({ statusCode: 422, message: '未知 action' })
}
return { success: true, affected: ids.length }
})