aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/video/video.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/models/video/video.ts')
-rw-r--r--server/models/video/video.ts38
1 files changed, 25 insertions, 13 deletions
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index 7a102b058..a563f78ef 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -225,7 +225,7 @@ type AvailableForListIDsOptions = {
225 }, 225 },
226 include: [ 226 include: [
227 { 227 {
228 model: VideoChannelModel.scope(VideoChannelScopeNames.SUMMARY) 228 model: VideoChannelModel.scope({ method: [ VideoChannelScopeNames.SUMMARY, true ] })
229 } 229 }
230 ] 230 ]
231 } 231 }
@@ -1535,18 +1535,7 @@ export class VideoModel extends Model<VideoModel> {
1535 1535
1536 if (ids.length === 0) return { data: [], total: count } 1536 if (ids.length === 0) return { data: [], total: count }
1537 1537
1538 // FIXME: typings 1538 const secondQuery: IFindOptions<VideoModel> = {
1539 const apiScope: any[] = [
1540 {
1541 method: [ ScopeNames.FOR_API, { ids, withFiles: options.withFiles } as ForAPIOptions ]
1542 }
1543 ]
1544
1545 if (options.user) {
1546 apiScope.push({ method: [ ScopeNames.WITH_USER_HISTORY, options.user.id ] })
1547 }
1548
1549 const secondQuery = {
1550 offset: 0, 1539 offset: 0,
1551 limit: query.limit, 1540 limit: query.limit,
1552 attributes: query.attributes, 1541 attributes: query.attributes,
@@ -1556,6 +1545,29 @@ export class VideoModel extends Model<VideoModel> {
1556 ) 1545 )
1557 ] 1546 ]
1558 } 1547 }
1548
1549 // FIXME: typing
1550 const apiScope: any[] = []
1551
1552 if (options.user) {
1553 apiScope.push({ method: [ ScopeNames.WITH_USER_HISTORY, options.user.id ] })
1554
1555 // Even if the relation is n:m, we know that a user only have 0..1 video history
1556 // So we won't have multiple rows for the same video
1557 // A subquery adds some bugs in our query so disable it
1558 secondQuery.subQuery = false
1559 }
1560
1561 apiScope.push({
1562 method: [
1563 ScopeNames.FOR_API, {
1564 ids, withFiles:
1565 options.withFiles,
1566 videoPlaylistId: options.videoPlaylistId
1567 } as ForAPIOptions
1568 ]
1569 })
1570
1559 const rows = await VideoModel.scope(apiScope).findAll(secondQuery) 1571 const rows = await VideoModel.scope(apiScope).findAll(secondQuery)
1560 1572
1561 return { 1573 return {