- [ ScopeNames.WITH_FILES ]: {
- include: [
- {
- model: () => VideoFileModel.unscoped(),
- // FIXME: typings
- [ 'separate' as any ]: true, // We may have multiple files, having multiple redundancies so let's separate this join
- required: false,
- include: [
- {
- attributes: [ 'fileUrl' ],
- model: () => VideoRedundancyModel.unscoped(),
- required: false
- }
- ]
- }
- ]
+ [ ScopeNames.WITH_FILES ]: (withRedundancies = false) => {
+ let subInclude: any[] = []
+
+ if (withRedundancies === true) {
+ subInclude = [
+ {
+ attributes: [ 'fileUrl' ],
+ model: VideoRedundancyModel.unscoped(),
+ required: false
+ }
+ ]
+ }
+
+ return {
+ include: [
+ {
+ model: VideoFileModel.unscoped(),
+ separate: true, // We may have multiple files, having multiple redundancies so let's separate this join
+ required: false,
+ include: subInclude
+ }
+ ]
+ }
+ },
+ [ ScopeNames.WITH_STREAMING_PLAYLISTS ]: (withRedundancies = false) => {
+ let subInclude: any[] = []
+
+ if (withRedundancies === true) {
+ subInclude = [
+ {
+ attributes: [ 'fileUrl' ],
+ model: VideoRedundancyModel.unscoped(),
+ required: false
+ }
+ ]
+ }
+
+ return {
+ include: [
+ {
+ model: VideoStreamingPlaylistModel.unscoped(),
+ separate: true, // We may have multiple streaming playlists, having multiple redundancies so let's separate this join
+ required: false,
+ include: subInclude
+ }
+ ]
+ }