aboutsummaryrefslogblamecommitdiffhomepage
path: root/server/models/video/sql/shared/video-tables.ts
blob: 042b9d5daa2b1d8830f6d115ab1b7b78856bed54 (plain) (tree)
1
2
3
4
5
6
7


   
                                                                                

   
                          




                                               



                                  


















                                            



                               





                                                   
                 










































                                                    

                



                                     
                                                                          




                                          
                                 


                            

                    

































                                                           



                             







































































                                            
             















































                                            

                       


     
/**
 *
 * Class to build video attributes/join names we want to fetch from the database
 *
 */
export class VideoTables {

  constructor (readonly mode: 'get' | 'list') {

  }

  getChannelAttributesForUser () {
    return [ 'id', 'accountId' ]
  }

  getChannelAttributes () {
    let attributeKeys = [
      'id',
      'name',
      'description',
      'actorId'
    ]

    if (this.mode === 'get') {
      attributeKeys = attributeKeys.concat([
        'support',
        'createdAt',
        'updatedAt'
      ])
    }

    return attributeKeys
  }

  getUserAccountAttributes () {
    return [ 'id', 'userId' ]
  }

  getAccountAttributes () {
    let attributeKeys = [ 'id', 'name', 'actorId' ]

    if (this.mode === 'get') {
      attributeKeys = attributeKeys.concat([
        'description',
        'userId',
        'createdAt',
        'updatedAt'
      ])
    }

    return attributeKeys
  }

  getThumbnailAttributes () {
    let attributeKeys = [ 'id', 'type', 'filename' ]

    if (this.mode === 'get') {
      attributeKeys = attributeKeys.concat([
        'height',
        'width',
        'fileUrl',
        'automaticallyGenerated',
        'videoId',
        'videoPlaylistId',
        'createdAt',
        'updatedAt'
      ])
    }

    return attributeKeys
  }

  getFileAttributes () {
    return [
      'id',
      'createdAt',
      'updatedAt',
      'resolution',
      'size',
      'extname',
      'filename',
      'fileUrl',
      'torrentFilename',
      'torrentUrl',
      'infoHash',
      'fps',
      'metadataUrl',
      'videoStreamingPlaylistId',
      'videoId',
      'storage'
    ]
  }

  getStreamingPlaylistAttributes () {
    let playlistKeys = [ 'id', 'playlistUrl', 'playlistFilename', 'type' ]

    if (this.mode === 'get') {
      playlistKeys = playlistKeys.concat([
        'p2pMediaLoaderInfohashes',
        'p2pMediaLoaderPeerVersion',
        'segmentsSha256Filename',
        'segmentsSha256Url',
        'videoId',
        'createdAt',
        'updatedAt',
        'storage'
      ])
    }

    return playlistKeys
  }

  getUserHistoryAttributes () {
    return [ 'id', 'currentTime' ]
  }

  getPlaylistAttributes () {
    return [
      'createdAt',
      'updatedAt',
      'url',
      'position',
      'startTimestamp',
      'stopTimestamp',
      'videoPlaylistId'
    ]
  }

  getTagAttributes () {
    return [ 'id', 'name' ]
  }

  getVideoTagAttributes () {
    return [ 'videoId', 'tagId', 'createdAt', 'updatedAt' ]
  }

  getBlacklistedAttributes () {
    return [ 'id', 'reason', 'unfederated' ]
  }

  getBlocklistAttributes () {
    return [ 'id' ]
  }

  getScheduleUpdateAttributes () {
    return [
      'id',
      'updateAt',
      'privacy',
      'videoId',
      'createdAt',
      'updatedAt'
    ]
  }

  getLiveAttributes () {
    return [
      'id',
      'streamKey',
      'saveReplay',
      'permanentLive',
      'videoId',
      'createdAt',
      'updatedAt'
    ]
  }

  getTrackerAttributes () {
    return [ 'id', 'url' ]
  }

  getVideoTrackerAttributes () {
    return [
      'videoId',
      'trackerId',
      'createdAt',
      'updatedAt'
    ]
  }

  getRedundancyAttributes () {
    return [ 'id', 'fileUrl' ]
  }

  getActorAttributes () {
    let attributeKeys = [
      'id',
      'preferredUsername',
      'url',
      'serverId',
      'avatarId'
    ]

    if (this.mode === 'get') {
      attributeKeys = attributeKeys.concat([
        'type',
        'followersCount',
        'followingCount',
        'inboxUrl',
        'outboxUrl',
        'sharedInboxUrl',
        'followersUrl',
        'followingUrl',
        'remoteCreatedAt',
        'createdAt',
        'updatedAt'
      ])
    }

    return attributeKeys
  }

  getAvatarAttributes () {
    let attributeKeys = [
      'id',
      'filename',
      'type',
      'fileUrl',
      'onDisk',
      'createdAt',
      'updatedAt'
    ]

    if (this.mode === 'get') {
      attributeKeys = attributeKeys.concat([
        'height',
        'width',
        'type'
      ])
    }

    return attributeKeys
  }

  getServerAttributes () {
    return [ 'id', 'host' ]
  }

  getVideoAttributes () {
    return [
      'id',
      'uuid',
      'name',
      'category',
      'licence',
      'language',
      'privacy',
      'nsfw',
      'description',
      'support',
      'duration',
      'views',
      'likes',
      'dislikes',
      'remote',
      'isLive',
      'url',
      'commentsEnabled',
      'downloadEnabled',
      'waitTranscoding',
      'state',
      'publishedAt',
      'originallyPublishedAt',
      'channelId',
      'createdAt',
      'updatedAt',
      'moveJobsRunning'
    ]
  }
}