- this.joins.push('LEFT OUTER JOIN "thumbnail" AS "Thumbnails" ON "video"."id" = "Thumbnails"."videoId"')
- }
-
- private includeFiles () {
- this.attributes = {
- ...this.attributes,
-
- '"VideoFiles"."id"': '"VideoFiles.id"',
- '"VideoFiles"."createdAt"': '"VideoFiles.createdAt"',
- '"VideoFiles"."updatedAt"': '"VideoFiles.updatedAt"',
- '"VideoFiles"."resolution"': '"VideoFiles.resolution"',
- '"VideoFiles"."size"': '"VideoFiles.size"',
- '"VideoFiles"."extname"': '"VideoFiles.extname"',
- '"VideoFiles"."filename"': '"VideoFiles.filename"',
- '"VideoFiles"."fileUrl"': '"VideoFiles.fileUrl"',
- '"VideoFiles"."torrentFilename"': '"VideoFiles.torrentFilename"',
- '"VideoFiles"."torrentUrl"': '"VideoFiles.torrentUrl"',
- '"VideoFiles"."infoHash"': '"VideoFiles.infoHash"',
- '"VideoFiles"."fps"': '"VideoFiles.fps"',
- '"VideoFiles"."videoId"': '"VideoFiles.videoId"',
-
- '"VideoStreamingPlaylists"."id"': '"VideoStreamingPlaylists.id"',
- '"VideoStreamingPlaylists"."playlistUrl"': '"VideoStreamingPlaylists.playlistUrl"',
- '"VideoStreamingPlaylists"."type"': '"VideoStreamingPlaylists.type"',
- '"VideoStreamingPlaylists->VideoFiles"."id"': '"VideoStreamingPlaylists.VideoFiles.id"',
- '"VideoStreamingPlaylists->VideoFiles"."createdAt"': '"VideoStreamingPlaylists.VideoFiles.createdAt"',
- '"VideoStreamingPlaylists->VideoFiles"."updatedAt"': '"VideoStreamingPlaylists.VideoFiles.updatedAt"',
- '"VideoStreamingPlaylists->VideoFiles"."resolution"': '"VideoStreamingPlaylists.VideoFiles.resolution"',
- '"VideoStreamingPlaylists->VideoFiles"."size"': '"VideoStreamingPlaylists.VideoFiles.size"',
- '"VideoStreamingPlaylists->VideoFiles"."extname"': '"VideoStreamingPlaylists.VideoFiles.extname"',
- '"VideoStreamingPlaylists->VideoFiles"."filename"': '"VideoStreamingPlaylists.VideoFiles.filename"',
- '"VideoStreamingPlaylists->VideoFiles"."fileUrl"': '"VideoStreamingPlaylists.VideoFiles.fileUrl"',
- '"VideoStreamingPlaylists->VideoFiles"."torrentFilename"': '"VideoStreamingPlaylists.VideoFiles.torrentFilename"',
- '"VideoStreamingPlaylists->VideoFiles"."torrentUrl"': '"VideoStreamingPlaylists.VideoFiles.torrentUrl"',
- '"VideoStreamingPlaylists->VideoFiles"."infoHash"': '"VideoStreamingPlaylists.VideoFiles.infoHash"',
- '"VideoStreamingPlaylists->VideoFiles"."fps"': '"VideoStreamingPlaylists.VideoFiles.fps"',
- '"VideoStreamingPlaylists->VideoFiles"."videoStreamingPlaylistId"': '"VideoStreamingPlaylists.VideoFiles.videoStreamingPlaylistId"',
- '"VideoStreamingPlaylists->VideoFiles"."videoId"': '"VideoStreamingPlaylists.VideoFiles.videoId"'
- }
-
- this.joins = this.joins.concat([
- 'LEFT JOIN "videoFile" AS "VideoFiles" ON "VideoFiles"."videoId" = "video"."id"',
-
- 'LEFT JOIN "videoStreamingPlaylist" AS "VideoStreamingPlaylists" ON "VideoStreamingPlaylists"."videoId" = "video"."id"',
-
- 'LEFT JOIN "videoFile" AS "VideoStreamingPlaylists->VideoFiles" ' +
- 'ON "VideoStreamingPlaylists->VideoFiles"."videoStreamingPlaylistId" = "VideoStreamingPlaylists"."id"'
- ])
- }
-
- private includeUserHistory (user: MUserId) {
- this.attributes = {
- ...this.attributes,
-
- '"userVideoHistory"."id"': '"userVideoHistory.id"',
- '"userVideoHistory"."currentTime"': '"userVideoHistory.currentTime"'
- }
-
- this.joins.push(
- 'LEFT OUTER JOIN "userVideoHistory" ' +
- 'ON "video"."id" = "userVideoHistory"."videoId" AND "userVideoHistory"."userId" = :userVideoHistoryId'
- )
-
- this.replacements.userVideoHistoryId = user.id
- }
-
- private includePlaylist (playlistId: number) {
- this.attributes = {
- ...this.attributes,
-
- '"VideoPlaylistElement"."createdAt"': '"VideoPlaylistElement.createdAt"',
- '"VideoPlaylistElement"."updatedAt"': '"VideoPlaylistElement.updatedAt"',
- '"VideoPlaylistElement"."url"': '"VideoPlaylistElement.url"',
- '"VideoPlaylistElement"."position"': '"VideoPlaylistElement.position"',
- '"VideoPlaylistElement"."startTimestamp"': '"VideoPlaylistElement.startTimestamp"',
- '"VideoPlaylistElement"."stopTimestamp"': '"VideoPlaylistElement.stopTimestamp"',
- '"VideoPlaylistElement"."videoPlaylistId"': '"VideoPlaylistElement.videoPlaylistId"'
- }
-
- this.joins.push(
- 'INNER JOIN "videoPlaylistElement" as "VideoPlaylistElement" ON "videoPlaylistElement"."videoId" = "video"."id" ' +
- 'AND "VideoPlaylistElement"."videoPlaylistId" = :videoPlaylistId'
- )
-
- this.replacements.videoPlaylistId = playlistId
- }
-
- private buildSelect () {
- return 'SELECT ' + Object.keys(this.attributes).map(key => {
- const value = this.attributes[key]
- if (value) return `${key} AS ${value}`