import { PickWith } from '@server/typings/utils'
import { MUser, MVideo, MVideoAccountLight, MVideoTag, MVideoThumbnail, MVideoWithFile } from '@server/typings/models'
-export type MVideoImport = Omit<VideoImportModel, 'User' | 'Video'>
+type Use<K extends keyof VideoImportModel, M> = PickWith<VideoImportModel, K, M>
-export type MVideoImportDefault = MVideoImport &
- PickWith<VideoImportModel, 'User', MUser> &
- PickWith<VideoImportModel, 'Video', MVideoTag & MVideoAccountLight & MVideoThumbnail>
+// ############################################################################
-export type MVideoImportDefaultFiles = MVideoImportDefault &
- PickWith<VideoImportModel, 'Video', MVideoTag & MVideoAccountLight & MVideoThumbnail & MVideoWithFile>
+export type MVideoImport = Omit<VideoImportModel, 'User' | 'Video'>
export type MVideoImportVideo = MVideoImport &
- PickWith<VideoImportModel, 'Video', MVideo>
+ Use<'Video', MVideo>
+
+// ############################################################################
+
+type VideoAssociation = MVideoTag & MVideoAccountLight & MVideoThumbnail
+
+export type MVideoImportDefault = MVideoImport &
+ Use<'User', MUser> &
+ Use<'Video', VideoAssociation>
+
+export type MVideoImportDefaultFiles = MVideoImport &
+ Use<'User', MUser> &
+ Use<'Video', VideoAssociation & MVideoWithFile>