32 行
1.0 KiB
JavaScript
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 }
|
|
})
|