From 444c0a0e017824fb4ce526281a22c4abe0a13c50 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 14 May 2020 16:56:15 +0200 Subject: Add ability to bulk delete comments --- server/controllers/api/bulk.ts | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 server/controllers/api/bulk.ts (limited to 'server/controllers/api/bulk.ts') diff --git a/server/controllers/api/bulk.ts b/server/controllers/api/bulk.ts new file mode 100644 index 000000000..1fe139c92 --- /dev/null +++ b/server/controllers/api/bulk.ts @@ -0,0 +1,41 @@ +import * as express from 'express' +import { asyncMiddleware, authenticate } from '../../middlewares' +import { bulkRemoveCommentsOfValidator } from '@server/middlewares/validators/bulk' +import { VideoCommentModel } from '@server/models/video/video-comment' +import { BulkRemoveCommentsOfBody } from '@shared/models/bulk/bulk-remove-comments-of-body.model' +import { removeComment } from '@server/lib/video-comment' + +const bulkRouter = express.Router() + +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.sendStatus(204) + + for (const comment of comments) { + await removeComment(comment) + } +} -- cgit v1.2.3