Merge branch 'develop' of gitssh.ihatebeinga.live:IHBAGang/pleroma into develop
[akkoma] / lib / mix / tasks / pleroma / search.ex
index 4acd0e34ac7fcf4e7cc74c3e1b745fbe4ea11eb0..2324561c1baaed6736da3ab101e0adc72a3e732a 100644 (file)
@@ -6,41 +6,59 @@ defmodule Mix.Tasks.Pleroma.Search do
   use Mix.Task
   import Mix.Pleroma
   import Ecto.Query
-  alias Pleroma.Elasticsearch
   alias Pleroma.Activity
-  alias Pleroma.Repo
   alias Pleroma.Pagination
+  alias Pleroma.User
+  alias Pleroma.Hashtag
 
   @shortdoc "Manages elasticsearch"
 
-  def run(["import" | rest]) do
+  def run(["import", "activities" | _rest]) do
     start_pleroma()
 
-    query = from(a in Activity, where: not ilike(a.actor, "%/relay"))
-    |> Activity.with_preloaded_object
-    |> Activity.with_preloaded_user_actor
-    |> get_all
+    from(a in Activity, where: not ilike(a.actor, "%/relay"))
+    |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data))
+    |> Activity.with_preloaded_object()
+    |> Activity.with_preloaded_user_actor()
+    |> get_all(:activities)
   end
 
-  defp get_all(query, max_id \\ nil) do
-    params = %{limit: 20}
-    params = if max_id == nil do
+  def run(["import", "users" | _rest]) do
+    start_pleroma()  
+                     
+    from(u in User, where: u.nickname not in ["internal.fetch", "relay"])
+    |> get_all(:users)
+  end
+
+  def run(["import", "hashtags" | _rest]) do
+    start_pleroma()
+
+    from(h in Hashtag)
+    |> Pleroma.Repo.all()
+    |> Pleroma.Elasticsearch.bulk_post(:hashtags)
+  end
+
+  defp get_all(query, index, max_id \\ nil) do
+    params = %{limit: 1000}
+
+    params =
+      if max_id == nil do
         params
-    else
+      else
         Map.put(params, :max_id, max_id)
-    end
+      end
 
-    res = query
-    |> Pagination.fetch_paginated(params)
+    res =
+      query
+      |> Pagination.fetch_paginated(params)
 
     if res == [] do
       :ok
     else
       res
-      |> Pleroma.Elasticsearch.bulk_post(:activities)
+      |> Pleroma.Elasticsearch.bulk_post(index)
 
-      get_all(query, List.last(res).id)
+      get_all(query, index, List.last(res).id)
     end
   end
-
 end