aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2022-03-21 09:26:48 +0100
committerChocobozzz <me@florianbigard.com>2022-03-21 09:26:48 +0100
commit43fc899a101c0fd266cc294dc573b256168bef18 (patch)
tree3082259de466145a8b0ba3855dfb92d0c1ef0fb8 /server
parent9ca5728be138fad03a63b6701cd4164a9433509d (diff)
downloadPeerTube-43fc899a101c0fd266cc294dc573b256168bef18.tar.gz
PeerTube-43fc899a101c0fd266cc294dc573b256168bef18.tar.zst
PeerTube-43fc899a101c0fd266cc294dc573b256168bef18.zip
Fix channels list count
Diffstat (limited to 'server')
-rw-r--r--server/models/video/video-channel.ts26
-rw-r--r--server/tests/api/videos/video-channels.ts18
2 files changed, 31 insertions, 13 deletions
diff --git a/server/models/video/video-channel.ts b/server/models/video/video-channel.ts
index 410fd6d3f..00ae58c68 100644
--- a/server/models/video/video-channel.ts
+++ b/server/models/video/video-channel.ts
@@ -143,28 +143,28 @@ export type SummaryOptions = {
143 }) 143 })
144 } 144 }
145 145
146 const channelInclude: Includeable[] = [] 146 const channelActorInclude: Includeable[] = []
147 const accountInclude: Includeable[] = [] 147 const accountActorInclude: Includeable[] = []
148 148
149 if (options.forCount !== true) { 149 if (options.forCount !== true) {
150 accountInclude.push({ 150 accountActorInclude.push({
151 model: ServerModel, 151 model: ServerModel,
152 required: false 152 required: false
153 }) 153 })
154 154
155 accountInclude.push({ 155 accountActorInclude.push({
156 model: ActorImageModel, 156 model: ActorImageModel,
157 as: 'Avatars', 157 as: 'Avatars',
158 required: false 158 required: false
159 }) 159 })
160 160
161 channelInclude.push({ 161 channelActorInclude.push({
162 model: ActorImageModel, 162 model: ActorImageModel,
163 as: 'Avatars', 163 as: 'Avatars',
164 required: false 164 required: false
165 }) 165 })
166 166
167 channelInclude.push({ 167 channelActorInclude.push({
168 model: ActorImageModel, 168 model: ActorImageModel,
169 as: 'Banners', 169 as: 'Banners',
170 required: false 170 required: false
@@ -172,7 +172,7 @@ export type SummaryOptions = {
172 } 172 }
173 173
174 if (options.forCount !== true || serverRequired) { 174 if (options.forCount !== true || serverRequired) {
175 channelInclude.push({ 175 channelActorInclude.push({
176 model: ServerModel, 176 model: ServerModel,
177 duplicating: false, 177 duplicating: false,
178 required: serverRequired, 178 required: serverRequired,
@@ -190,7 +190,7 @@ export type SummaryOptions = {
190 where: { 190 where: {
191 [Op.and]: whereActorAnd 191 [Op.and]: whereActorAnd
192 }, 192 },
193 include: channelInclude 193 include: channelActorInclude
194 }, 194 },
195 { 195 {
196 model: AccountModel.unscoped(), 196 model: AccountModel.unscoped(),
@@ -202,7 +202,7 @@ export type SummaryOptions = {
202 }, 202 },
203 model: ActorModel.unscoped(), 203 model: ActorModel.unscoped(),
204 required: true, 204 required: true,
205 include: accountInclude 205 include: accountActorInclude
206 } 206 }
207 ] 207 ]
208 } 208 }
@@ -605,17 +605,17 @@ ON "Account->Actor"."serverId" = "Account->Actor->Server"."id"`
605 } 605 }
606 } 606 }
607 607
608 const scopes: string | ScopeOptions | (string | ScopeOptions)[] = [ ScopeNames.WITH_ACTOR_BANNER ] 608 const findScopes: string | ScopeOptions | (string | ScopeOptions)[] = [ ScopeNames.WITH_ACTOR_BANNER ]
609 609
610 if (options.withStats === true) { 610 if (options.withStats === true) {
611 scopes.push({ 611 findScopes.push({
612 method: [ ScopeNames.WITH_STATS, { daysPrior: 30 } as AvailableWithStatsOptions ] 612 method: [ ScopeNames.WITH_STATS, { daysPrior: 30 } as AvailableWithStatsOptions ]
613 }) 613 })
614 } 614 }
615 615
616 return Promise.all([ 616 return Promise.all([
617 VideoChannelModel.scope(scopes).count(getQuery(true)), 617 VideoChannelModel.unscoped().count(getQuery(true)),
618 VideoChannelModel.scope(scopes).findAll(getQuery(false)) 618 VideoChannelModel.scope(findScopes).findAll(getQuery(false))
619 ]).then(([ total, data ]) => ({ total, data })) 619 ]).then(([ total, data ]) => ({ total, data }))
620 } 620 }
621 621
diff --git a/server/tests/api/videos/video-channels.ts b/server/tests/api/videos/video-channels.ts
index 0f8227fd3..09a4bfa70 100644
--- a/server/tests/api/videos/video-channels.ts
+++ b/server/tests/api/videos/video-channels.ts
@@ -325,6 +325,24 @@ describe('Test video channels', function () {
325 } 325 }
326 }) 326 })
327 327
328 it('Should still correctly list channels', async function () {
329 {
330 const body = await servers[0].channels.list({ start: 1, count: 1, sort: 'createdAt' })
331
332 expect(body.total).to.equal(3)
333 expect(body.data).to.have.lengthOf(1)
334 expect(body.data[0].name).to.equal('second_video_channel')
335 }
336
337 {
338 const body = await servers[0].channels.listByAccount({ accountName, start: 1, count: 1, sort: 'createdAt' })
339
340 expect(body.total).to.equal(2)
341 expect(body.data).to.have.lengthOf(1)
342 expect(body.data[0].name).to.equal('second_video_channel')
343 }
344 })
345
328 it('Should delete the video channel avatar', async function () { 346 it('Should delete the video channel avatar', async function () {
329 this.timeout(15000) 347 this.timeout(15000)
330 await servers[0].channels.deleteImage({ channelName: 'second_video_channel', type: 'avatar' }) 348 await servers[0].channels.deleteImage({ channelName: 'second_video_channel', type: 'avatar' })