+ // Only list local channels OR channels that are on an instance followed by actorId
+ const inQueryInstanceFollow = '(' +
+ 'SELECT "actor"."serverId" FROM "actorFollow" ' +
+ 'INNER JOIN "actor" ON actor.id= "actorFollow"."targetActorId" ' +
+ 'WHERE "actorFollow"."actorId" = ' + actorIdNumber +
+ ')'
+
+ return {
+ include: [
+ {
+ attributes: {
+ exclude: unusedActorAttributesForAPI
+ },
+ model: ActorModel,
+ where: {
+ [Sequelize.Op.or]: [
+ {
+ serverId: null
+ },
+ {
+ serverId: {
+ [ Sequelize.Op.in ]: Sequelize.literal(inQueryInstanceFollow)
+ }
+ }
+ ]
+ }
+ },
+ {
+ model: AccountModel,
+ required: true,
+ include: [
+ {
+ attributes: {
+ exclude: unusedActorAttributesForAPI
+ },
+ model: ActorModel, // Default scope includes avatar and server
+ required: true
+ }
+ ]
+ }
+ ]
+ }
+ },
+ [ScopeNames.WITH_ACCOUNT]: {
+ include: [
+ {
+ model: () => AccountModel,
+ required: true
+ }
+ ]
+ },
+ [ScopeNames.WITH_VIDEOS]: {
+ include: [
+ () => VideoModel
+ ]
+ },
+ [ScopeNames.WITH_ACTOR]: {
+ include: [
+ () => ActorModel
+ ]
+ }
+})
+@Table({
+ tableName: 'videoChannel',
+ indexes
+})
+export class VideoChannelModel extends Model<VideoChannelModel> {