aboutsummaryrefslogblamecommitdiffhomepage
path: root/server/typings/models/video/video-channels.ts
blob: b6506ed9f6bf83c438332c178a7701f377964e42 (plain) (tree)
1
2
3
4
5
6
7
8
                                      



                                                                       

                  
                        




                         

                     



                                


                                                                                  


                                                                                                 








                                                                               
                                                          



                                      


                                        




                                                                               

                                      
                                  
 

                                           
 


                                             
 
                                                                               
 
                       

                                             




                                               
 






                                                                               
                                       
                         
 







                                                                               
 

                                                                                         
 

                                                      
 


                                    
import { PickWith } from '../../utils'
import { VideoChannelModel } from '../../../models/video/video-channel'
import {
  MAccountActor,
  MAccountAPI,
  MAccountDefault,
  MAccountLight,
  MAccountSummaryBlocks,
  MAccountUserId,
  MActor,
  MActorAccountChannelId,
  MActorAPI,
  MActorDefault,
  MActorDefaultLight,
  MActorLight,
  MActorSummary
} from '../account'
import { MVideo } from './video'

type Use<K extends keyof VideoChannelModel, M> = PickWith<VideoChannelModel, K, M>

// ############################################################################

export type MChannel = Omit<VideoChannelModel, 'Actor' | 'Account' | 'Videos' | 'VideoPlaylists'>

// ############################################################################

export type MChannelId = Pick<MChannel, 'id'>

// ############################################################################

export type MChannelIdActor = MChannelId &
  Use<'Actor', MActorAccountChannelId>

export type MChannelUserId = Pick<MChannel, 'accountId'> &
  Use<'Account', MAccountUserId>

export type MChannelActor = MChannel &
  Use<'Actor', MActor>

// Default scope
export type MChannelDefault = MChannel &
  Use<'Actor', MActorDefault>

// ############################################################################

// Not all association attributes

export type MChannelLight = MChannel &
  Use<'Actor', MActorDefaultLight>

export type MChannelActorLight = MChannel &
  Use<'Actor', MActorLight>

export type MChannelAccountLight = MChannel &
  Use<'Actor', MActorDefaultLight> &
  Use<'Account', MAccountLight>

// ############################################################################

// Account associations

export type MChannelAccountActor = MChannel &
  Use<'Account', MAccountActor>

export type MChannelAccountDefault = MChannel &
  Use<'Actor', MActorDefault> &
  Use<'Account', MAccountDefault>

export type MChannelActorAccountActor = MChannel &
  Use<'Account', MAccountActor> &
  Use<'Actor', MActor>

// ############################################################################

// Videos  associations
export type MChannelVideos = MChannel &
  Use<'Videos', MVideo[]>

export type MChannelActorAccountDefaultVideos = MChannel &
  Use<'Actor', MActorDefault> &
  Use<'Account', MAccountDefault> &
  Use<'Videos', MVideo[]>

// ############################################################################

// For API

export type MChannelSummary = Pick<MChannel, 'id' | 'name' | 'description' | 'actorId'> &
  Use<'Actor', MActorSummary>

export type MChannelSummaryAccount = MChannelSummary &
  Use<'Account', MAccountSummaryBlocks>

export type MChannelAPI = MChannel &
  Use<'Actor', MActorAPI> &
  Use<'Account', MAccountAPI>