1 import { ACTIVITY_PUB } from '@server/initializers/constants'
2 import { VideoPlaylistModel } from '@server/models/video/video-playlist'
3 import { VideoPlaylistElementModel } from '@server/models/video/video-playlist-element'
4 import { MAccountId, MVideoId, MVideoPlaylistId } from '@server/types/models'
5 import { AttributesOnly } from '@shared/core-utils'
6 import { PlaylistElementObject, PlaylistObject, VideoPlaylistPrivacy } from '@shared/models'
8 function playlistObjectToDBAttributes (playlistObject: PlaylistObject, byAccount: MAccountId, to: string[]) {
9 const privacy = to.includes(ACTIVITY_PUB.PUBLIC)
10 ? VideoPlaylistPrivacy.PUBLIC
11 : VideoPlaylistPrivacy.UNLISTED
14 name: playlistObject.name,
15 description: playlistObject.content,
17 url: playlistObject.id,
18 uuid: playlistObject.uuid,
19 ownerAccountId: byAccount.id,
21 createdAt: new Date(playlistObject.published),
22 updatedAt: new Date(playlistObject.updated)
23 } as AttributesOnly<VideoPlaylistModel>
26 function playlistElementObjectToDBAttributes (elementObject: PlaylistElementObject, videoPlaylist: MVideoPlaylistId, video: MVideoId) {
28 position: elementObject.position,
29 url: elementObject.id,
30 startTimestamp: elementObject.startTimestamp || null,
31 stopTimestamp: elementObject.stopTimestamp || null,
32 videoPlaylistId: videoPlaylist.id,
34 } as AttributesOnly<VideoPlaylistElementModel>
38 playlistObjectToDBAttributes,
39 playlistElementObjectToDBAttributes