]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/controllers/api/users/my-video-playlists.ts
Implement signup approval in server
[github/Chocobozzz/PeerTube.git] / server / controllers / api / users / my-video-playlists.ts
CommitLineData
41fb13c3 1import express from 'express'
4638cd71
C
2import { forceNumber } from '@shared/core-utils'
3import { uuidToShort } from '@shared/extra-utils'
4c7e60bc 4import { VideosExistInPlaylists } from '../../../../shared/models/videos/playlist/video-exist-in-playlist.model'
f0a39880 5import { asyncMiddleware, authenticate } from '../../../middlewares'
f0a39880
C
6import { doVideosInPlaylistExistValidator } from '../../../middlewares/validators/videos/video-playlists'
7import { VideoPlaylistModel } from '../../../models/video/video-playlist'
f0a39880
C
8
9const myVideoPlaylistsRouter = express.Router()
10
11myVideoPlaylistsRouter.get('/me/video-playlists/videos-exist',
12 authenticate,
13 doVideosInPlaylistExistValidator,
14 asyncMiddleware(doVideosInPlaylistExist)
15)
16
17// ---------------------------------------------------------------------------
18
19export {
20 myVideoPlaylistsRouter
21}
22
23// ---------------------------------------------------------------------------
24
25async function doVideosInPlaylistExist (req: express.Request, res: express.Response) {
4638cd71 26 const videoIds = req.query.videoIds.map(i => forceNumber(i))
dae86118 27 const user = res.locals.oauth.token.User
f0a39880 28
38a3ccc7 29 const results = await VideoPlaylistModel.listPlaylistSummariesOf(user.Account.id, videoIds)
f0a39880 30
51b34a11 31 const existObject: VideosExistInPlaylists = {}
f0a39880
C
32
33 for (const videoId of videoIds) {
34 existObject[videoId] = []
35 }
36
37 for (const result of results) {
38 for (const element of result.VideoPlaylistElements) {
39 existObject[element.videoId].push({
bfbd9128 40 playlistElementId: element.id,
f0a39880 41 playlistId: result.id,
38a3ccc7 42 playlistDisplayName: result.name,
43 playlistShortUUID: uuidToShort(result.uuid),
f0a39880
C
44 startTimestamp: element.startTimestamp,
45 stopTimestamp: element.stopTimestamp
46 })
47 }
48 }
49
50 return res.json(existObject)
51}