]>
Commit | Line | Data |
---|---|---|
41fb13c3 | 1 | import express from 'express' |
10363c74 C |
2 | import { VideoCommentModel } from '@server/models/video/video-comment' |
3 | import { MVideoId } from '@server/types/models' | |
4638cd71 | 4 | import { forceNumber } from '@shared/core-utils' |
5a9a56b7 | 5 | import { HttpStatusCode, ServerErrorCode } from '@shared/models' |
10363c74 C |
6 | |
7 | async function doesVideoCommentThreadExist (idArg: number | string, video: MVideoId, res: express.Response) { | |
4638cd71 | 8 | const id = forceNumber(idArg) |
10363c74 C |
9 | const videoComment = await VideoCommentModel.loadById(id) |
10 | ||
11 | if (!videoComment) { | |
12 | res.fail({ | |
13 | status: HttpStatusCode.NOT_FOUND_404, | |
14 | message: 'Video comment thread not found' | |
15 | }) | |
16 | return false | |
17 | } | |
18 | ||
19 | if (videoComment.videoId !== video.id) { | |
5a9a56b7 C |
20 | res.fail({ |
21 | type: ServerErrorCode.COMMENT_NOT_ASSOCIATED_TO_VIDEO, | |
22 | message: 'Video comment is not associated to this video.' | |
23 | }) | |
10363c74 C |
24 | return false |
25 | } | |
26 | ||
27 | if (videoComment.inReplyToCommentId !== null) { | |
28 | res.fail({ message: 'Video comment is not a thread.' }) | |
29 | return false | |
30 | } | |
31 | ||
32 | res.locals.videoCommentThread = videoComment | |
33 | return true | |
34 | } | |
35 | ||
36 | async function doesVideoCommentExist (idArg: number | string, video: MVideoId, res: express.Response) { | |
4638cd71 | 37 | const id = forceNumber(idArg) |
10363c74 C |
38 | const videoComment = await VideoCommentModel.loadByIdAndPopulateVideoAndAccountAndReply(id) |
39 | ||
40 | if (!videoComment) { | |
41 | res.fail({ | |
42 | status: HttpStatusCode.NOT_FOUND_404, | |
43 | message: 'Video comment thread not found' | |
44 | }) | |
45 | return false | |
46 | } | |
47 | ||
48 | if (videoComment.videoId !== video.id) { | |
5a9a56b7 C |
49 | res.fail({ |
50 | type: ServerErrorCode.COMMENT_NOT_ASSOCIATED_TO_VIDEO, | |
51 | message: 'Video comment is not associated to this video.' | |
52 | }) | |
10363c74 C |
53 | return false |
54 | } | |
55 | ||
56 | res.locals.videoCommentFull = videoComment | |
57 | return true | |
58 | } | |
59 | ||
60 | async function doesCommentIdExist (idArg: number | string, res: express.Response) { | |
4638cd71 | 61 | const id = forceNumber(idArg) |
10363c74 C |
62 | const videoComment = await VideoCommentModel.loadByIdAndPopulateVideoAndAccountAndReply(id) |
63 | ||
64 | if (!videoComment) { | |
65 | res.fail({ | |
66 | status: HttpStatusCode.NOT_FOUND_404, | |
67 | message: 'Video comment thread not found' | |
68 | }) | |
69 | return false | |
70 | } | |
71 | ||
72 | res.locals.videoCommentFull = videoComment | |
73 | return true | |
74 | } | |
75 | ||
76 | export { | |
77 | doesVideoCommentThreadExist, | |
78 | doesVideoCommentExist, | |
79 | doesCommentIdExist | |
80 | } |