Browse Source

Use more efficient query to fetch likes.

tags/v0.9.9
Roger Braun 6 years ago
parent
commit
5293516730
1 changed files with 5 additions and 1 deletions
  1. +5
    -1
      lib/pleroma/web/activity_pub/utils.ex

+ 5
- 1
lib/pleroma/web/activity_pub/utils.ex View File

@@ -90,7 +90,11 @@ defmodule Pleroma.Web.ActivityPub.Utils do
"""
def get_existing_like(actor, %{data: %{"id" => id}} = object) do
query = from activity in Activity,
where: fragment("? @> ?", activity.data, ^%{actor: actor, object: id, type: "Like"})
where: fragment("(?)->>'actor' = ?", activity.data, ^actor),
# this is to use the index
where: fragment("coalesce((?)->'object'->>'id', (?)->>'object') = ?", activity.data, activity.data, ^id),
where: fragment("(?)->>'type' = 'Like'", activity.data)

Repo.one(query)
end



Loading…
Cancel
Save