/**
 *
 * Class to build video attributes/join names we want to fetch from the database
 *
 */ export class VideoTableAttributes { constructor ( readonly mode ) { } 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 ( ) { return [ 'id' , 'playlistUrl' , 'playlistFilename' , 'type' , 'p2pMediaLoaderInfohashes' , 'p2pMediaLoaderPeerVersion' , 'segmentsSha256Filename' , 'segmentsSha256Url' , 'videoId' , 'createdAt' , 'updatedAt' , 'storage' ] ; } 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' ] ; } }