diff options
author | lain <lain@soykaf.club> | 2019-04-02 16:04:18 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-04-02 16:08:55 +0200 |
commit | fd07745d1b18e2a1eeb88a99eaa9d5e728d1aa71 (patch) | |
tree | 734e37960d5af945240217420c9073f8327da48a /lib | |
parent | 749d53e2b2ffb108964c569f04e5989c63643338 (diff) | |
download | pleroma-fd07745d1b18e2a1eeb88a99eaa9d5e728d1aa71.tar.gz |
ActivityPub Utils: Greatly speed up the follow / block activity fetching.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 2e9ffe41c..a4b1518de 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -404,13 +404,15 @@ defmodule Pleroma.Web.ActivityPub.Utils do activity.data ), where: activity.actor == ^follower_id, + # this is to use the index where: fragment( - "? @> ?", + "coalesce((?)->'object'->>'id', (?)->>'object') = ?", + activity.data, activity.data, - ^%{object: followed_id} + ^followed_id ), - order_by: [desc: :id], + order_by: [fragment("? desc nulls last", activity.id)], limit: 1 ) @@ -567,13 +569,15 @@ defmodule Pleroma.Web.ActivityPub.Utils do activity.data ), where: activity.actor == ^blocker_id, + # this is to use the index where: fragment( - "? @> ?", + "coalesce((?)->'object'->>'id', (?)->>'object') = ?", + activity.data, activity.data, - ^%{object: blocked_id} + ^blocked_id ), - order_by: [desc: :id], + order_by: [fragment("? desc nulls last", activity.id)], limit: 1 ) |