video-import.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import { VideoImportModel } from '@server/models/video/video-import'
  2. import { PickWith, PickWithOpt } from '@server/typings/utils'
  3. import { MVideo, MVideoAccountLight, MVideoFormattable, MVideoTag, MVideoThumbnail, MVideoWithFile } from './video'
  4. import { MUser } from '../user/user'
  5. type Use<K extends keyof VideoImportModel, M> = PickWith<VideoImportModel, K, M>
  6. // ############################################################################
  7. export type MVideoImport = Omit<VideoImportModel, 'User' | 'Video'>
  8. export type MVideoImportVideo = MVideoImport &
  9. Use<'Video', MVideo>
  10. // ############################################################################
  11. type VideoAssociation = MVideoTag & MVideoAccountLight & MVideoThumbnail
  12. export type MVideoImportDefault = MVideoImport &
  13. Use<'User', MUser> &
  14. Use<'Video', VideoAssociation>
  15. export type MVideoImportDefaultFiles = MVideoImport &
  16. Use<'User', MUser> &
  17. Use<'Video', VideoAssociation & MVideoWithFile>
  18. // ############################################################################
  19. // Format for API or AP object
  20. export type MVideoImportFormattable = MVideoImport &
  21. PickWithOpt<VideoImportModel, 'Video', MVideoFormattable & MVideoTag>