From 05e7d0a438ab8223b059441a0acd62e99b022d82 Mon Sep 17 00:00:00 2001
From: rinpatch <rinpatch@sdf.org>
Date: Fri, 23 Aug 2019 03:17:20 +0300
Subject: [PATCH] Add an index on object likes

In !1538 favorites timeline was switched to use the joined object, but
no idex on likes in the joined object was added.
---
 CHANGELOG.md                                               | 1 +
 .../20190823000549_add_likes_index_to_objects.exs          | 7 +++++++
 2 files changed, 8 insertions(+)
 create mode 100644 priv/repo/migrations/20190823000549_add_likes_index_to_objects.exs

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b0f4f40e..880fba58a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 ### Fixed
 - Not being able to pin unlisted posts
 - Objects being re-embedded to activities after being updated (e.g faved/reposted). Running 'mix pleroma.database prune_objects' again is advised.
+- Favorites timeline doing database-intensive queries
 - Metadata rendering errors resulting in the entire page being inaccessible
 - `federation_incoming_replies_max_depth` option being ignored in certain cases
 - Federation/MediaProxy not working with instances that have wrong certificate order
diff --git a/priv/repo/migrations/20190823000549_add_likes_index_to_objects.exs b/priv/repo/migrations/20190823000549_add_likes_index_to_objects.exs
new file mode 100644
index 000000000..13f3d6e83
--- /dev/null
+++ b/priv/repo/migrations/20190823000549_add_likes_index_to_objects.exs
@@ -0,0 +1,7 @@
+defmodule Pleroma.Repo.Migrations.AddLikesIndexToObjects do
+  use Ecto.Migration
+
+  def change do
+    create_if_not_exists index(:objects, ["(data->'likes')"], using: :gin, name: :objects_likes)
+  end
+end