Split types and typings
[oweals/peertube.git] / server / lib / video-playlist.ts
1 import * as Sequelize from 'sequelize'
2 import { VideoPlaylistModel } from '../models/video/video-playlist'
3 import { VideoPlaylistPrivacy } from '../../shared/models/videos/playlist/video-playlist-privacy.model'
4 import { getVideoPlaylistActivityPubUrl } from './activitypub/url'
5 import { VideoPlaylistType } from '../../shared/models/videos/playlist/video-playlist-type.model'
6 import { MAccount } from '../types/models'
7 import { MVideoPlaylistOwner } from '../types/models/video/video-playlist'
8
9 async function createWatchLaterPlaylist (account: MAccount, t: Sequelize.Transaction) {
10   const videoPlaylist: MVideoPlaylistOwner = new VideoPlaylistModel({
11     name: 'Watch later',
12     privacy: VideoPlaylistPrivacy.PRIVATE,
13     type: VideoPlaylistType.WATCH_LATER,
14     ownerAccountId: account.id
15   })
16
17   videoPlaylist.url = getVideoPlaylistActivityPubUrl(videoPlaylist) // We use the UUID, so set the URL after building the object
18
19   await videoPlaylist.save({ transaction: t })
20
21   videoPlaylist.OwnerAccount = account
22
23   return videoPlaylist
24 }
25
26 // ---------------------------------------------------------------------------
27
28 export {
29   createWatchLaterPlaylist
30 }