Use more efficient user note count update query.

This commit is contained in:
Roger Braun 2017-10-24 14:16:17 +02:00
parent 29c261e75b
commit 9af560083f
2 changed files with 10 additions and 1 deletions

View file

@ -241,7 +241,7 @@ def get_friends(%User{id: id, following: following}) do
def update_note_count(%User{} = user) do def update_note_count(%User{} = user) do
note_count_query = from a in Object, note_count_query = from a in Object,
where: fragment("? @> ?", a.data, ^%{actor: user.ap_id, type: "Note"}), where: fragment("?->>'actor' = ? and ?->>'type' = 'Note'", a.data, ^user.ap_id, a.data),
select: count(a.id) select: count(a.id)
note_count = Repo.one(note_count_query) note_count = Repo.one(note_count_query)

View file

@ -0,0 +1,9 @@
defmodule Pleroma.Repo.Migrations.AddObjectActorIndex do
use Ecto.Migration
@disable_ddl_transaction true
def change do
create index(:objects, ["(data->>'actor')", "(data->>'type')"], concurrently: true, name: :objects_actor_type)
end
end