]>
Commit | Line | Data |
---|---|---|
453e83ea C |
1 | import { VideoPlaylistModel } from '../../../models/video/video-playlist' |
2 | import { PickWith } from '../../utils' | |
3 | import { MAccount, MAccountDefault, MAccountSummary } from '../account' | |
4 | import { MThumbnail } from './thumbnail' | |
5 | import { MChannelDefault, MChannelSummary } from './video-channels' | |
6 | import { MVideoPlaylistElementLight } from '@server/typings/models/video/video-playlist-element' | |
7 | ||
0283eaac C |
8 | type Use<K extends keyof VideoPlaylistModel, M> = PickWith<VideoPlaylistModel, K, M> |
9 | ||
10 | // ############################################################################ | |
11 | ||
453e83ea | 12 | export type MVideoPlaylist = Omit<VideoPlaylistModel, 'OwnerAccount' | 'VideoChannel' | 'VideoPlaylistElements' | 'Thumbnail'> |
0283eaac C |
13 | |
14 | // ############################################################################ | |
15 | ||
453e83ea C |
16 | export type MVideoPlaylistId = Pick<MVideoPlaylist, 'id'> |
17 | export type MVideoPlaylistPrivacy = Pick<MVideoPlaylist, 'privacy'> | |
0283eaac C |
18 | export type MVideoPlaylistUUID = Pick<MVideoPlaylist, 'uuid'> |
19 | export type MVideoPlaylistVideosLength = MVideoPlaylist & { videosLength: number } | |
20 | ||
21 | // ############################################################################ | |
22 | ||
23 | // With elements | |
453e83ea C |
24 | |
25 | export type MVideoPlaylistWithElements = MVideoPlaylist & | |
0283eaac | 26 | Use<'VideoPlaylistElements', MVideoPlaylistElementLight[]> |
453e83ea | 27 | |
0283eaac C |
28 | export type MVideoPlaylistIdWithElements = MVideoPlaylistId & |
29 | Use<'VideoPlaylistElements', MVideoPlaylistElementLight[]> | |
30 | ||
31 | // ############################################################################ | |
32 | ||
33 | // With account | |
453e83ea C |
34 | |
35 | export type MVideoPlaylistOwner = MVideoPlaylist & | |
0283eaac | 36 | Use<'OwnerAccount', MAccount> |
453e83ea C |
37 | |
38 | export type MVideoPlaylistOwnerDefault = MVideoPlaylist & | |
0283eaac C |
39 | Use<'OwnerAccount', MAccountDefault> |
40 | ||
41 | // ############################################################################ | |
42 | ||
43 | // With thumbnail | |
453e83ea C |
44 | |
45 | export type MVideoPlaylistThumbnail = MVideoPlaylist & | |
0283eaac | 46 | Use<'Thumbnail', MThumbnail> |
453e83ea | 47 | |
0283eaac C |
48 | export type MVideoPlaylistAccountThumbnail = MVideoPlaylist & |
49 | Use<'OwnerAccount', MAccountDefault> & | |
50 | Use<'Thumbnail', MThumbnail> | |
453e83ea | 51 | |
0283eaac C |
52 | // ############################################################################ |
53 | ||
54 | // With channel | |
453e83ea C |
55 | |
56 | export type MVideoPlaylistAccountChannelDefault = MVideoPlaylist & | |
0283eaac C |
57 | Use<'OwnerAccount', MAccountDefault> & |
58 | Use<'VideoChannel', MChannelDefault> | |
453e83ea | 59 | |
0283eaac | 60 | // ############################################################################ |
453e83ea | 61 | |
0283eaac C |
62 | // With all associations |
63 | ||
64 | export type MVideoPlaylistFull = MVideoPlaylist & | |
65 | Use<'OwnerAccount', MAccountDefault> & | |
66 | Use<'VideoChannel', MChannelDefault> & | |
67 | Use<'Thumbnail', MThumbnail> | |
68 | ||
69 | // ############################################################################ | |
70 | ||
71 | // For API | |
72 | ||
73 | export type MVideoPlaylistAccountChannelSummary = MVideoPlaylist & | |
74 | Use<'OwnerAccount', MAccountSummary> & | |
75 | Use<'VideoChannel', MChannelSummary> | |
453e83ea | 76 | |
0283eaac C |
77 | export type MVideoPlaylistFullSummary = MVideoPlaylist & |
78 | Use<'Thumbnail', MThumbnail> & | |
79 | Use<'OwnerAccount', MAccountSummary> & | |
80 | Use<'VideoChannel', MChannelSummary> |