Speed up instance timeline query
authorAlex Gleason <alex@alexgleason.me>
Wed, 5 Aug 2020 18:08:13 +0000 (13:08 -0500)
committerAlex Gleason <alex@alexgleason.me>
Wed, 5 Aug 2020 18:08:13 +0000 (13:08 -0500)
lib/pleroma/web/activity_pub/activity_pub.ex
test/web/admin_api/controllers/admin_api_controller_test.exs

index 9ce2b04dd5d512e064993bb684c52fbd8498d9e3..76fc9c3ee7f56c3cf0fbef69cfc1fbbc739e92c9 100644 (file)
@@ -928,7 +928,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
   defp restrict_muted_reblogs(query, _), do: query
 
   defp restrict_instance(query, %{instance: instance}) when is_binary(instance) do
-    from(activity in query, where: ilike(activity.actor, ^"%://#{instance}/%"))
+    from(
+      activity in query,
+      where: fragment("split_part(actor::text, '/'::text, 3) = ?", ^instance)
+    )
   end
 
   defp restrict_instance(query, _), do: query
index da91cd552afb8552695baa21f861c84d3c3d9666..26194eb814005924ce830e70a7a11d45fd44a3f8 100644 (file)
@@ -1647,8 +1647,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
 
   describe "instances" do
     test "GET /instances/:instance/statuses", %{conn: conn} do
-      user = insert(:user, local: false, nickname: "archaeme@archae.me")
-      user2 = insert(:user, local: false, nickname: "test@test.com")
+      user = insert(:user, local: false, ap_id: "https://archae.me/users/archaeme")
+      user2 = insert(:user, local: false, ap_id: "https://test.com/users/test")
       insert_pair(:note_activity, user: user)
       activity = insert(:note_activity, user: user2)