total rebase
[anni] / lib / pleroma / search / search_backend.ex
diff --git a/lib/pleroma/search/search_backend.ex b/lib/pleroma/search/search_backend.ex
new file mode 100644 (file)
index 0000000..68bc48c
--- /dev/null
@@ -0,0 +1,24 @@
+defmodule Pleroma.Search.SearchBackend do
+  @doc """
+  Search statuses with a query, restricting to only those the user should have access to.
+  """
+  @callback search(user :: Pleroma.User.t(), query :: String.t(), options :: [any()]) :: [
+              Pleroma.Activity.t()
+            ]
+
+  @doc """
+  Add the object associated with the activity to the search index.
+
+  The whole activity is passed, to allow filtering on things such as scope.
+  """
+  @callback add_to_index(activity :: Pleroma.Activity.t()) :: :ok | {:error, any()}
+
+  @doc """
+  Remove the object from the index.
+
+  Just the object, as opposed to the whole activity, is passed, since the object
+  is what contains the actual content and there is no need for filtering when removing
+  from index.
+  """
+  @callback remove_from_index(object :: Pleroma.Object.t()) :: :ok | {:error, any()}
+end