import * as z from 'zod'
import WikiArticle from '../../../models/wikiArticle.js'
import { connectDB } from '../../../utils/mongoose.js'

const batchVisibilitySchema = z.object({
  articleIds: z.array(z.string()).optional(),
  collection: z.string().optional(),
  hidden: z.boolean()
})

export default defineEventHandler(async (event) => {
  await requireAdmin(event)

  const body = await validateBody(event, batchVisibilitySchema)

  if (!body.articleIds && !body.collection) {
    throw createError({
      statusCode: 400,
      statusMessage: 'Must provide either articleIds or collection'
    })
  }

  await connectDB()

  const filter = body.articleIds
    ? { _id: { $in: body.articleIds } }
    : { collection: body.collection }

  const result = await WikiArticle.updateMany(filter, {
    $set: { hidden: body.hidden }
  })

  return { modified: result.modifiedCount || 0 }
})
