From: FloatingGhost Date: Thu, 16 Dec 2021 16:13:41 +0000 (+0000) Subject: Merge remote-tracking branch 'origin/feature/elasticsearch' into develop X-Git-Url: http://git.squeep.com/?a=commitdiff_plain;h=415d9dd6f6887af96d85cfb2c306b94bb8a1a42f;hp=0c0ea169d4be469921f8bbb72995f3d5bff87b0d;p=akkoma Merge remote-tracking branch 'origin/feature/elasticsearch' into develop --- diff --git a/lib/mix/tasks/pleroma/activity.ex b/lib/mix/tasks/pleroma/activity.ex index 53323efd6..3a79d8f20 100644 --- a/lib/mix/tasks/pleroma/activity.ex +++ b/lib/mix/tasks/pleroma/activity.ex @@ -4,19 +4,13 @@ defmodule Mix.Tasks.Pleroma.Activity do alias Pleroma.Activity - alias Pleroma.Activity.Search alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Pagination require Logger import Mix.Pleroma import Ecto.Query - @shortdoc "A collection of activity debug tasks" - @moduledoc """ - A collection of activity related tasks - mix pleroma.activity get - """ def run(["get", id | _rest]) do start_pleroma() diff --git a/lib/pleroma/elasticsearch/document_mappings/hashtag.ex b/lib/pleroma/elasticsearch/document_mappings/hashtag.ex index 1c47d1451..ce9a86c8d 100644 --- a/lib/pleroma/elasticsearch/document_mappings/hashtag.ex +++ b/lib/pleroma/elasticsearch/document_mappings/hashtag.ex @@ -1,6 +1,13 @@ defmodule Pleroma.Elasticsearch.DocumentMappings.Hashtag do def id(obj), do: obj.id + def encode(%{timestamp: _} = hashtag) do + %{ + hashtag: hashtag.name, + timestamp: hashtag.timestamp + } + end + def encode(hashtag) do %{ hashtag: hashtag.name, diff --git a/lib/pleroma/elasticsearch/store.ex b/lib/pleroma/elasticsearch/store.ex index aa5e2b104..7f6ef37a9 100644 --- a/lib/pleroma/elasticsearch/store.ex +++ b/lib/pleroma/elasticsearch/store.ex @@ -1,6 +1,7 @@ defmodule Pleroma.Elasticsearch do alias Pleroma.Activity alias Pleroma.User + alias Pleroma.Object alias Pleroma.Elasticsearch.DocumentMappings alias Pleroma.Config require Logger @@ -45,6 +46,12 @@ defmodule Pleroma.Elasticsearch do {:ok, :skipped} end + def maybe_bulk_post(data, type) do + if enabled?() do + bulk_post(data, type) + end + end + def put(%Activity{} = activity) do {:ok, _} = Elastix.Document.index( @@ -54,6 +61,12 @@ defmodule Pleroma.Elasticsearch do DocumentMappings.Activity.id(activity), DocumentMappings.Activity.encode(activity) ) + + activity + |> Map.get(:object) + |> Object.hashtags() + |> Enum.map(fn x -> %{id: x, name: x, timestamp: DateTime.to_iso8601(DateTime.utc_now())} end) + |> bulk_post(:hashtags) end def put(%User{} = user) do @@ -95,11 +108,6 @@ defmodule Pleroma.Elasticsearch do ) end - def maybe_bulk_post(data, type) do - if enabled?() do - bulk_post(data, type) - end - end def bulk_post(data, :users) do d = @@ -121,7 +129,7 @@ defmodule Pleroma.Elasticsearch do ) end - def bulk_post([] = data, :hashtags) do + def bulk_post(data, :hashtags) when is_list(data) do d = data |> Enum.map(fn d ->