aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models
diff options
context:
space:
mode:
authorRigel Kent <sendmemail@rigelk.eu>2019-12-27 17:02:34 +0100
committerRigel Kent <sendmemail@rigelk.eu>2019-12-27 17:02:44 +0100
commitc1125bcadc1fa129856e56dc62f4c472cffa736a (patch)
treee6873bf7a306bfe809809f099d2d465dae3407b0 /server/models
parent6f79be110d31f4f751b989fe36b9de0d0f259fe0 (diff)
downloadPeerTube-c1125bcadc1fa129856e56dc62f4c472cffa736a.tar.gz
PeerTube-c1125bcadc1fa129856e56dc62f4c472cffa736a.tar.zst
PeerTube-c1125bcadc1fa129856e56dc62f4c472cffa736a.zip
Add comment filtering by reply count
Diffstat (limited to 'server/models')
-rw-r--r--server/models/utils.ts14
-rw-r--r--server/models/video/video-comment.ts4
2 files changed, 16 insertions, 2 deletions
diff --git a/server/models/utils.ts b/server/models/utils.ts
index b53a52a05..4199cc443 100644
--- a/server/models/utils.ts
+++ b/server/models/utils.ts
@@ -22,6 +22,19 @@ function getSort (value: string, lastSort: OrderItem = [ 'id', 'ASC' ]): OrderIt
22 return [ [ finalField, direction ], lastSort ] 22 return [ [ finalField, direction ], lastSort ]
23} 23}
24 24
25function getCommentSort (value: string, lastSort: OrderItem = [ 'id', 'ASC' ]): OrderItem[] {
26 const { direction, field } = buildDirectionAndField(value)
27
28 if (field === 'totalReplies') {
29 return [
30 [ Sequelize.literal('"totalReplies"'), direction ],
31 lastSort
32 ]
33 }
34
35 return getSort(value, lastSort)
36}
37
25function getVideoSort (value: string, lastSort: OrderItem = [ 'id', 'ASC' ]): OrderItem[] { 38function getVideoSort (value: string, lastSort: OrderItem = [ 'id', 'ASC' ]): OrderItem[] {
26 const { direction, field } = buildDirectionAndField(value) 39 const { direction, field } = buildDirectionAndField(value)
27 40
@@ -167,6 +180,7 @@ export {
167 SortType, 180 SortType,
168 buildLocalAccountIdsIn, 181 buildLocalAccountIdsIn,
169 getSort, 182 getSort,
183 getCommentSort,
170 getVideoSort, 184 getVideoSort,
171 getBlacklistSort, 185 getBlacklistSort,
172 createSimilarityAttribute, 186 createSimilarityAttribute,
diff --git a/server/models/video/video-comment.ts b/server/models/video/video-comment.ts
index 869a42afe..28f011b03 100644
--- a/server/models/video/video-comment.ts
+++ b/server/models/video/video-comment.ts
@@ -6,7 +6,7 @@ import { isActivityPubUrlValid } from '../../helpers/custom-validators/activityp
6import { CONSTRAINTS_FIELDS, WEBSERVER } from '../../initializers/constants' 6import { CONSTRAINTS_FIELDS, WEBSERVER } from '../../initializers/constants'
7import { AccountModel } from '../account/account' 7import { AccountModel } from '../account/account'
8import { ActorModel } from '../activitypub/actor' 8import { ActorModel } from '../activitypub/actor'
9import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getSort, throwIfNotValid } from '../utils' 9import { buildBlockedAccountSQL, buildLocalAccountIdsIn, getCommentSort, throwIfNotValid } from '../utils'
10import { VideoModel } from './video' 10import { VideoModel } from './video'
11import { VideoChannelModel } from './video-channel' 11import { VideoChannelModel } from './video-channel'
12import { getServerActor } from '../../helpers/utils' 12import { getServerActor } from '../../helpers/utils'
@@ -259,7 +259,7 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
259 const query = { 259 const query = {
260 offset: start, 260 offset: start,
261 limit: count, 261 limit: count,
262 order: getSort(sort), 262 order: getCommentSort(sort),
263 where: { 263 where: {
264 videoId, 264 videoId,
265 inReplyToCommentId: null, 265 inReplyToCommentId: null,