import express from 'express' import { BulkRemoveCommentsOfBody, HttpStatusCode } from '@peertube/peertube-models' import { removeComment } from '@server/lib/video-comment.js' import { bulkRemoveCommentsOfValidator } from '@server/middlewares/validators/bulk.js' import { VideoCommentModel } from '@server/models/video/video-comment.js' import { apiRateLimiter, asyncMiddleware, authenticate } from '../../middlewares/index.js' const bulkRouter = express.Router() bulkRouter.use(apiRateLimiter) bulkRouter.post('/remove-comments-of', authenticate, asyncMiddleware(bulkRemoveCommentsOfValidator), asyncMiddleware(bulkRemoveCommentsOf) ) // --------------------------------------------------------------------------- export { bulkRouter } // --------------------------------------------------------------------------- async function bulkRemoveCommentsOf (req: express.Request, res: express.Response) { const account = res.locals.account const body = req.body as BulkRemoveCommentsOfBody const user = res.locals.oauth.token.User const filter = body.scope === 'my-videos' ? { onVideosOfAccount: user.Account } : {} const comments = await VideoCommentModel.listForBulkDelete(account, filter) // Don't wait result res.status(HttpStatusCode.NO_CONTENT_204).end() for (const comment of comments) { await removeComment(comment, req, res) } }