Search Indexing: filter indexable activities before inserting Oban jobs
This commit is contained in:
parent
9953b0da59
commit
627c944fec
1 changed files with 20 additions and 3 deletions
|
|
@ -1,12 +1,26 @@
|
|||
defmodule Pleroma.Search do
|
||||
alias Pleroma.Activity
|
||||
alias Pleroma.Object
|
||||
alias Pleroma.Workers.SearchIndexingWorker
|
||||
|
||||
def add_to_index(%Pleroma.Activity{id: activity_id}) do
|
||||
SearchIndexingWorker.enqueue("add_to_index", %{"activity" => activity_id})
|
||||
@spec add_to_index(Activity.t()) :: :ok | :error
|
||||
def add_to_index(%Pleroma.Activity{id: activity_id} = activity) do
|
||||
with true <- indexable?(activity),
|
||||
{:ok, %Oban.Job{}} <-
|
||||
SearchIndexingWorker.enqueue("add_to_index", %{"activity" => activity_id}) do
|
||||
:ok
|
||||
else
|
||||
false -> :ok
|
||||
_ -> :error
|
||||
end
|
||||
end
|
||||
|
||||
@spec remove_from_index(Object.t()) :: :ok | :error
|
||||
def remove_from_index(%Pleroma.Object{id: object_id}) do
|
||||
SearchIndexingWorker.enqueue("remove_from_index", %{"object" => object_id})
|
||||
case SearchIndexingWorker.enqueue("remove_from_index", %{"object" => object_id}) do
|
||||
{:ok, %Oban.Job{}} -> :ok
|
||||
_ -> :error
|
||||
end
|
||||
end
|
||||
|
||||
def search(query, options) do
|
||||
|
|
@ -18,4 +32,7 @@ defmodule Pleroma.Search do
|
|||
search_module = Pleroma.Config.get([Pleroma.Search, :module])
|
||||
search_module.healthcheck_endpoints
|
||||
end
|
||||
|
||||
defp indexable?(%Activity{object: %Object{}, data: %{"type" => "Create"}}), do: true
|
||||
defp indexable?(_), do: false
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue