X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpleroma%2Felasticsearch%2Fstore.ex;h=f309bf7a5e484ca54652f0d30c8c159123383af9;hb=06ab00d62511b958c5a01140c588e9bb83470587;hp=2ff4bf889eab3670a9c41d4bd95789f6d139383f;hpb=c684265585ee712cc4606f39f8fe2be467e77e7c;p=akkoma diff --git a/lib/pleroma/elasticsearch/store.ex b/lib/pleroma/elasticsearch/store.ex index 2ff4bf889..f309bf7a5 100644 --- a/lib/pleroma/elasticsearch/store.ex +++ b/lib/pleroma/elasticsearch/store.ex @@ -1,36 +1,71 @@ defmodule Pleroma.Elasticsearch do alias Pleroma.Activity alias Pleroma.Elasticsearch.DocumentMappings + alias Pleroma.Config defp url do - Pleroma.Config.get([:elasticsearch, :url]) + Config.get([:elasticsearch, :url]) + end + + def put_by_id(id) do + id + |> Activity.get_by_id_with_object() + |> maybe_put_into_elasticsearch() + end + + def maybe_put_into_elasticsearch({:ok, activity}) do + maybe_put_into_elasticsearch(activity) + end + + def maybe_put_into_elasticsearch(%{data: %{"type" => "Create"}, object: %{data: %{"type" => "Note"}}} = activity) do + if Config.get([:search, :provider]) == Pleroma.Search.Elasticsearch do + actor = Pleroma.Activity.user_actor(activity) + + activity + |> Map.put(:user_actor, actor) + |> put() + end + end + + def maybe_put_into_elasticsearch(_) do + {:ok, :skipped} end def put(%Activity{} = activity) do Elastix.Document.index( - url(), - "activities", - "activity", - DocumentMappings.Activity.id(activity), - DocumentMappings.Activity.encode(activity) + url(), + "activities", + "activity", + DocumentMappings.Activity.id(activity), + DocumentMappings.Activity.encode(activity) ) end def bulk_post(data, :activities) do - d = data - |> Enum.map(fn d -> + d = + data + |> Enum.map(fn d -> [ - %{index: %{_id: DocumentMappings.Activity.id(d)}}, - DocumentMappings.Activity.encode(d) + %{index: %{_id: DocumentMappings.Activity.id(d)}}, + DocumentMappings.Activity.encode(d) ] - end) - |> List.flatten() - - IO.inspect Elastix.Bulk.post( - url(), - d, - index: "activities", - type: "activity" + end) + |> List.flatten() + + Elastix.Bulk.post( + url(), + d, + index: "activities", + type: "activity" + ) + end + + def search_activities(q) do + Elastix.Search.search( + url(), + "activities", + ["activity"], + q ) end end