From d1079f1aa307a40ae2adeff095b27adc87c5dccd Mon Sep 17 00:00:00 2001
From: Ekaterina Vaartis <vaartis@kotobank.ch>
Date: Mon, 23 Aug 2021 20:21:46 +0300
Subject: [PATCH] Add the meilisearch.stats command

---
 lib/mix/tasks/pleroma/search/meilisearch.ex | 10 +++++++++-
 lib/pleroma/search/meilisearch.ex           | 12 ++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/lib/mix/tasks/pleroma/search/meilisearch.ex b/lib/mix/tasks/pleroma/search/meilisearch.ex
index 557b06182..f2d9fe312 100644
--- a/lib/mix/tasks/pleroma/search/meilisearch.ex
+++ b/lib/mix/tasks/pleroma/search/meilisearch.ex
@@ -9,7 +9,7 @@ defmodule Mix.Tasks.Pleroma.Search.Meilisearch do
   import Mix.Pleroma
   import Ecto.Query
 
-  import Pleroma.Search.Meilisearch, only: [meili_post!: 2, meili_delete!: 1]
+  import Pleroma.Search.Meilisearch, only: [meili_post!: 2, meili_delete!: 1, meili_get!: 1]
 
   def run(["index"]) do
     start_pleroma()
@@ -111,4 +111,12 @@ defmodule Mix.Tasks.Pleroma.Search.Meilisearch do
       IO.puts("Error fetching the key, check the master key is correct: #{inspect(decoded)}")
     end
   end
+
+  def run(["stats"]) do
+    start_pleroma()
+
+    result = meili_get!("/indexes/objects/stats")
+    IO.puts("Number of entries: #{result["numberOfDocuments"]}")
+    IO.puts("Indexing? #{result["isIndexing"]}")
+  end
 end
diff --git a/lib/pleroma/search/meilisearch.ex b/lib/pleroma/search/meilisearch.ex
index 8745d539d..1ad17bf9f 100644
--- a/lib/pleroma/search/meilisearch.ex
+++ b/lib/pleroma/search/meilisearch.ex
@@ -13,6 +13,18 @@ defmodule Pleroma.Search.Meilisearch do
     if is_nil(private_key), do: [], else: [{"X-Meili-API-Key", private_key}]
   end
 
+  def meili_get!(path) do
+    endpoint = Pleroma.Config.get([Pleroma.Search.Meilisearch, :url])
+
+    {:ok, result} =
+      Pleroma.HTTP.get(
+        Path.join(endpoint, path),
+        meili_headers()
+      )
+
+    Jason.decode!(result.body)
+  end
+
   def meili_post!(path, params) do
     endpoint = Pleroma.Config.get([Pleroma.Search.Meilisearch, :url])
 
-- 
2.49.0