-enum ScopeNames {
- WITH_ALL = 'WITH_ALL'
-}
-
-function buildActorWithAvatarInclude () {
- return {
- attributes: [ 'preferredUsername' ],
- model: ActorModel.unscoped(),
- required: true,
- include: [
- {
- attributes: [ 'filename' ],
- as: 'Avatar',
- model: ActorImageModel.unscoped(),
- required: false
- },
- {
- attributes: [ 'host' ],
- model: ServerModel.unscoped(),
- required: false
- }
- ]
- }
-}
-
-function buildVideoInclude (required: boolean) {
- return {
- attributes: [ 'id', 'uuid', 'name' ],
- model: VideoModel.unscoped(),
- required
- }
-}
-
-function buildChannelInclude (required: boolean, withActor = false) {
- return {
- required,
- attributes: [ 'id', 'name' ],
- model: VideoChannelModel.unscoped(),
- include: withActor === true ? [ buildActorWithAvatarInclude() ] : []
- }
-}
-
-function buildAccountInclude (required: boolean, withActor = false) {
- return {
- required,
- attributes: [ 'id', 'name' ],
- model: AccountModel.unscoped(),
- include: withActor === true ? [ buildActorWithAvatarInclude() ] : []
- }
-}
-
-@Scopes(() => ({
- [ScopeNames.WITH_ALL]: {
- include: [
- Object.assign(buildVideoInclude(false), {
- include: [ buildChannelInclude(true, true) ]
- }),
-
- {
- attributes: [ 'id', 'originCommentId' ],
- model: VideoCommentModel.unscoped(),
- required: false,
- include: [
- buildAccountInclude(true, true),
- buildVideoInclude(true)
- ]
- },
-
- {
- attributes: [ 'id', 'state' ],
- model: AbuseModel.unscoped(),
- required: false,
- include: [
- {
- attributes: [ 'id' ],
- model: VideoAbuseModel.unscoped(),
- required: false,
- include: [ buildVideoInclude(false) ]
- },
- {
- attributes: [ 'id' ],
- model: VideoCommentAbuseModel.unscoped(),
- required: false,
- include: [
- {
- attributes: [ 'id', 'originCommentId' ],
- model: VideoCommentModel.unscoped(),
- required: false,
- include: [
- {
- attributes: [ 'id', 'name', 'uuid' ],
- model: VideoModel.unscoped(),
- required: false
- }
- ]
- }
- ]
- },
- {
- model: AccountModel,
- as: 'FlaggedAccount',
- required: false,
- include: [ buildActorWithAvatarInclude() ]
- }
- ]
- },
-
- {
- attributes: [ 'id' ],
- model: VideoBlacklistModel.unscoped(),
- required: false,
- include: [ buildVideoInclude(true) ]
- },
-
- {
- attributes: [ 'id', 'magnetUri', 'targetUrl', 'torrentName' ],
- model: VideoImportModel.unscoped(),
- required: false,
- include: [ buildVideoInclude(false) ]
- },
-
- {
- attributes: [ 'id', 'name', 'type', 'latestVersion' ],
- model: PluginModel.unscoped(),
- required: false
- },
-
- {
- attributes: [ 'id', 'latestPeerTubeVersion' ],
- model: ApplicationModel.unscoped(),
- required: false
- },
-
- {
- attributes: [ 'id', 'state' ],
- model: ActorFollowModel.unscoped(),
- required: false,
- include: [
- {
- attributes: [ 'preferredUsername' ],
- model: ActorModel.unscoped(),
- required: true,
- as: 'ActorFollower',
- include: [
- {
- attributes: [ 'id', 'name' ],
- model: AccountModel.unscoped(),
- required: true
- },
- {
- attributes: [ 'filename' ],
- as: 'Avatar',
- model: ActorImageModel.unscoped(),
- required: false
- },
- {
- attributes: [ 'host' ],
- model: ServerModel.unscoped(),
- required: false
- }
- ]
- },
- {
- attributes: [ 'preferredUsername', 'type' ],
- model: ActorModel.unscoped(),
- required: true,
- as: 'ActorFollowing',
- include: [
- buildChannelInclude(false),
- buildAccountInclude(false),
- {
- attributes: [ 'host' ],
- model: ServerModel.unscoped(),
- required: false
- }
- ]
- }
- ]
- },
-
- buildAccountInclude(false, true)
- ]
- }
-}))