mirror of https://github.com/Chocobozzz/PeerTube
parent
2e866cc75d
commit
2d9ab59061
|
@ -31,7 +31,6 @@ import { sendDeleteVideo } from '../../lib/activitypub/send'
|
||||||
import { AccountModel } from '../account/account'
|
import { AccountModel } from '../account/account'
|
||||||
import { AccountVideoRateModel } from '../account/account-video-rate'
|
import { AccountVideoRateModel } from '../account/account-video-rate'
|
||||||
import { ActorModel } from '../activitypub/actor'
|
import { ActorModel } from '../activitypub/actor'
|
||||||
import { ActorFollowModel } from '../activitypub/actor-follow'
|
|
||||||
import { ServerModel } from '../server/server'
|
import { ServerModel } from '../server/server'
|
||||||
import { getSort, throwIfNotValid } from '../utils'
|
import { getSort, throwIfNotValid } from '../utils'
|
||||||
import { TagModel } from './tag'
|
import { TagModel } from './tag'
|
||||||
|
@ -54,33 +53,27 @@ enum ScopeNames {
|
||||||
|
|
||||||
@Scopes({
|
@Scopes({
|
||||||
[ScopeNames.AVAILABLE_FOR_LIST]: (actorId: number) => ({
|
[ScopeNames.AVAILABLE_FOR_LIST]: (actorId: number) => ({
|
||||||
subQuery: false,
|
|
||||||
where: {
|
where: {
|
||||||
id: {
|
id: {
|
||||||
[Sequelize.Op.notIn]: Sequelize.literal(
|
[Sequelize.Op.notIn]: Sequelize.literal(
|
||||||
'(SELECT "videoBlacklist"."videoId" FROM "videoBlacklist")'
|
'(SELECT "videoBlacklist"."videoId" FROM "videoBlacklist")'
|
||||||
)
|
),
|
||||||
},
|
|
||||||
privacy: VideoPrivacy.PUBLIC,
|
|
||||||
[Sequelize.Op.or]: [
|
|
||||||
{
|
|
||||||
'$VideoChannel.Account.Actor.serverId$': null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'$VideoChannel.Account.Actor.ActorFollowers.actorId$': actorId
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: {
|
|
||||||
[ Sequelize.Op.in ]: Sequelize.literal(
|
[ Sequelize.Op.in ]: Sequelize.literal(
|
||||||
'(' +
|
'(' +
|
||||||
'SELECT "videoShare"."videoId" FROM "videoShare" ' +
|
'SELECT "videoShare"."videoId" AS "id" FROM "videoShare" ' +
|
||||||
'INNER JOIN "actorFollow" ON "actorFollow"."targetActorId" = "videoShare"."actorId" ' +
|
'INNER JOIN "actorFollow" ON "actorFollow"."targetActorId" = "videoShare"."actorId" ' +
|
||||||
'WHERE "actorFollow"."actorId" = ' + parseInt(actorId.toString(), 10) +
|
'WHERE "actorFollow"."actorId" = ' + parseInt(actorId.toString(), 10) +
|
||||||
|
' UNION ' +
|
||||||
|
'SELECT "video"."id" AS "id" FROM "video" ' +
|
||||||
|
'INNER JOIN "videoChannel" ON "videoChannel"."id" = "video"."channelId" ' +
|
||||||
|
'INNER JOIN "account" ON "account"."id" = "videoChannel"."accountId" ' +
|
||||||
|
'INNER JOIN "actor" ON "account"."actorId" = "actor"."id" ' +
|
||||||
|
'LEFT JOIN "actorFollow" ON "actorFollow"."targetActorId" = "actor"."id" ' +
|
||||||
|
'WHERE "actor"."serverId" IS NULL OR "actorFollow"."actorId" = ' + parseInt(actorId.toString(), 10) +
|
||||||
')'
|
')'
|
||||||
)
|
)
|
||||||
}
|
},
|
||||||
}
|
privacy: VideoPrivacy.PUBLIC
|
||||||
]
|
|
||||||
},
|
},
|
||||||
include: [
|
include: [
|
||||||
{
|
{
|
||||||
|
@ -100,14 +93,7 @@ enum ScopeNames {
|
||||||
include: [
|
include: [
|
||||||
{
|
{
|
||||||
attributes: [ 'host' ],
|
attributes: [ 'host' ],
|
||||||
model: ServerModel.unscoped(),
|
model: ServerModel.unscoped()
|
||||||
required: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
attributes: [ ],
|
|
||||||
model: ActorFollowModel.unscoped(),
|
|
||||||
as: 'ActorFollowers',
|
|
||||||
required: false
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue