aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Braun <roger@rogerbraun.net>2017-07-01 16:43:10 +0200
committerRoger Braun <roger@rogerbraun.net>2017-07-01 16:43:10 +0200
commit5e17e0414412a951ffc549db9231759292d55bc1 (patch)
tree567a1d4394d997a0aab537d79f6f865f3c080095
parent9cda5b897a17af9191de2261daf530b3f294d60d (diff)
downloadpleroma-5e17e0414412a951ffc549db9231759292d55bc1.tar.gz
Make user timelines faster for users with few statuses.
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex2
-rw-r--r--lib/pleroma/web/ostatus/ostatus_controller.ex2
-rw-r--r--priv/repo/migrations/20170701142005_add_actor_index_to_activity.exs7
3 files changed, 9 insertions, 2 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 79c1d5b69..69a2d8f4e 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -112,7 +112,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
defp restrict_actor(query, %{"actor_id" => actor_id}) do
from activity in query,
- where: fragment("? @> ?", activity.data, ^%{actor: actor_id})
+ where: fragment("?->>'actor' = ?", activity.data, ^actor_id)
end
defp restrict_actor(query, _), do: query
diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex
index e676a60c3..05acfd04b 100644
--- a/lib/pleroma/web/ostatus/ostatus_controller.ex
+++ b/lib/pleroma/web/ostatus/ostatus_controller.ex
@@ -19,7 +19,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do
def feed(conn, %{"nickname" => nickname}) do
user = User.get_cached_by_nickname(nickname)
query = from activity in Activity,
- where: fragment("? @> ?", activity.data, ^%{actor: user.ap_id}),
+ where: fragment("?->>'actor' = ?", activity.data, ^user.ap_id),
limit: 20,
order_by: [desc: :inserted_at]
diff --git a/priv/repo/migrations/20170701142005_add_actor_index_to_activity.exs b/priv/repo/migrations/20170701142005_add_actor_index_to_activity.exs
new file mode 100644
index 000000000..82c64396f
--- /dev/null
+++ b/priv/repo/migrations/20170701142005_add_actor_index_to_activity.exs
@@ -0,0 +1,7 @@
+defmodule Pleroma.Repo.Migrations.AddActorIndexToActivity do
+ use Ecto.Migration
+
+ def change do
+ create index(:activities, ["(data->>'actor')", "inserted_at desc"], name: :activities_actor_index)
+ end
+end