1 import { VideoImportModel } from '@server/models/video/video-import'
2 import { PickWith, PickWithOpt } from '@server/typings/utils'
3 import { MUser, MVideo, MVideoAccountLight, MVideoFormattable, MVideoTag, MVideoThumbnail, MVideoWithFile } from '@server/typings/models'
5 type Use<K extends keyof VideoImportModel, M> = PickWith<VideoImportModel, K, M>
7 // ############################################################################
9 export type MVideoImport = Omit<VideoImportModel, 'User' | 'Video'>
11 export type MVideoImportVideo = MVideoImport &
14 // ############################################################################
16 type VideoAssociation = MVideoTag & MVideoAccountLight & MVideoThumbnail
18 export type MVideoImportDefault = MVideoImport &
20 Use<'Video', VideoAssociation>
22 export type MVideoImportDefaultFiles = MVideoImport &
24 Use<'Video', VideoAssociation & MVideoWithFile>
26 // ############################################################################
28 // Format for API or AP object
30 export type MVideoImportFormattable = MVideoImport &
31 PickWithOpt<VideoImportModel, 'Video', MVideoFormattable & MVideoTag>