X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-playlist-element.ts;h=4e41608186265c2339f89e40b3ebe25b9e07a0ce;hb=0c9a83546687d2ae80b3f5299a8ee59d741f894f;hp=d2d7e2740eeffe03e09f9faa6c8ec2c8ab294494;hpb=b49f22d8f9a52ab75fd38db2d377249eb58fa678;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-playlist-element.ts b/server/models/video/video-playlist-element.ts index d2d7e2740..4e4160818 100644 --- a/server/models/video/video-playlist-element.ts +++ b/server/models/video/video-playlist-element.ts @@ -23,6 +23,7 @@ import { MVideoPlaylistElementVideoUrlPlaylistPrivacy, MVideoPlaylistVideoThumbnail } from '@server/types/models/video/video-playlist-element' +import { AttributesOnly } from '@shared/typescript-utils' import { PlaylistElementObject } from '../../../shared/models/activitypub/objects/playlist-element-object' import { VideoPrivacy } from '../../../shared/models/videos' import { VideoPlaylistElement, VideoPlaylistElementType } from '../../../shared/models/videos/playlist/video-playlist-element.model' @@ -48,7 +49,7 @@ import { VideoPlaylistModel } from './video-playlist' } ] }) -export class VideoPlaylistElementModel extends Model { +export class VideoPlaylistElementModel extends Model>> { @CreatedAt createdAt: Date @@ -207,22 +208,28 @@ export class VideoPlaylistElementModel extends Model { } static listUrlsOfForAP (videoPlaylistId: number, start: number, count: number, t?: Transaction) { - const query = { - attributes: [ 'url' ], - offset: start, - limit: count, - order: getSort('position'), - where: { - videoPlaylistId - }, - transaction: t + const getQuery = (forCount: boolean) => { + return { + attributes: forCount + ? [] + : [ 'url' ], + offset: start, + limit: count, + order: getSort('position'), + where: { + videoPlaylistId + }, + transaction: t + } } - return VideoPlaylistElementModel - .findAndCountAll(query) - .then(({ rows, count }) => { - return { total: count, data: rows.map(e => e.url) } - }) + return Promise.all([ + VideoPlaylistElementModel.count(getQuery(true)), + VideoPlaylistElementModel.findAll(getQuery(false)) + ]).then(([ total, rows ]) => ({ + total, + data: rows.map(e => e.url) + })) } static loadFirstElementWithVideoThumbnail (videoPlaylistId: number): Promise { @@ -274,13 +281,13 @@ export class VideoPlaylistElementModel extends Model { validate: false // We use a literal to update the position } - return VideoPlaylistElementModel.update({ position: Sequelize.literal(`${newPosition} + "position" - ${firstPosition}`) }, query) + const positionQuery = Sequelize.literal(`${newPosition} + "position" - ${firstPosition}`) + return VideoPlaylistElementModel.update({ position: positionQuery }, query) } static increasePositionOf ( videoPlaylistId: number, fromPosition: number, - toPosition?: number, by = 1, transaction?: Transaction ) {