From 759f8a29e95932023564ca98dcbc90d1acb92da0 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 9 Jan 2018 18:13:00 +0100 Subject: [PATCH] Fix sharedInboxUrl list --- server/models/activitypub/actor-follow.ts | 29 +++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index c35c712ed..5fcc3449d 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -191,12 +191,13 @@ export class ActorFollowModel extends Model { static listAcceptedFollowerSharedInboxUrls (actorIds: number[], t: Sequelize.Transaction) { return ActorFollowModel.createListAcceptedFollowForApiQuery( - 'DISTINCT(followers)', + 'followers', actorIds, t, undefined, undefined, - 'sharedInboxUrl' + 'sharedInboxUrl', + true ) } @@ -204,12 +205,15 @@ export class ActorFollowModel extends Model { return ActorFollowModel.createListAcceptedFollowForApiQuery('following', actorIds, t, start, count) } - private static async createListAcceptedFollowForApiQuery (type: 'followers' | 'following' | 'DISTINCT(followers)', - actorIds: number[], - t: Sequelize.Transaction, - start?: number, - count?: number, - columnUrl = 'url') { + private static async createListAcceptedFollowForApiQuery ( + type: 'followers' | 'following', + actorIds: number[], + t: Sequelize.Transaction, + start?: number, + count?: number, + columnUrl = 'url', + distinct = false + ) { let firstJoin: string let secondJoin: string @@ -221,10 +225,15 @@ export class ActorFollowModel extends Model { secondJoin = 'targetActorId' } - const selections = [ '"Follows"."' + columnUrl + '" AS "url"', 'COUNT(*) AS "total"' ] + const selections: string[] = [] + if (distinct === true) selections.push('DISTINCT("Follows"."' + columnUrl + '") AS "url"') + else selections.push('"Follows"."' + columnUrl + '" AS "url"') + + selections.push('COUNT(*) AS "total"') + const tasks: Bluebird[] = [] - for (const selection of selections) { + for (let selection of selections) { let query = 'SELECT ' + selection + ' FROM "actor" ' + 'INNER JOIN "actorFollow" ON "actorFollow"."' + firstJoin + '" = "actor"."id" ' + 'INNER JOIN "actor" AS "Follows" ON "actorFollow"."' + secondJoin + '" = "Follows"."id" ' +