aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2019-03-03 15:51:32 +0000
committerkaniini <nenolod@gmail.com>2019-03-03 15:51:32 +0000
commitb531e366dfffa6b34900dd249492707bff647401 (patch)
tree040bbff6b8398c3758ecfe20b8b160b3fe9ea7d2 /lib
parent413cf00cc3d245c61bedc0c57735e450794b1339 (diff)
parent1a1f4520cd711d46a53ffa0ec657f8a7e46896e7 (diff)
downloadpleroma-b531e366dfffa6b34900dd249492707bff647401.tar.gz
Merge branch 'get-follow-requests-sql' into 'develop'
Use sql query in User.get_follow_requests/1 for filtering logic See merge request pleroma/pleroma!883
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex15
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 82922d236..d69ca094e 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -622,15 +622,14 @@ defmodule Pleroma.User do
end
def get_follow_requests(%User{} = user) do
- q = get_follow_requests_query(user)
- reqs = Repo.all(q)
-
users =
- Enum.map(reqs, fn req -> req.actor end)
- |> Enum.uniq()
- |> Enum.map(fn ap_id -> get_by_ap_id(ap_id) end)
- |> Enum.filter(fn u -> !is_nil(u) end)
- |> Enum.filter(fn u -> !following?(u, user) end)
+ user
+ |> User.get_follow_requests_query()
+ |> join(:inner, [a], u in User, a.actor == u.ap_id)
+ |> where([a, u], not fragment("? @> ?", u.following, ^[user.follower_address]))
+ |> group_by([a, u], u.id)
+ |> select([a, u], u)
+ |> Repo.all()
{:ok, users}
end