Merge remote-tracking branch 'upstream/develop' into admin-create-users
[akkoma] / lib / pleroma / object.ex
index 3f1d0fea1f28e67651195f337c09f9f16cf214c2..cc6fc9c5dfeb25c3311778fc4878090069c8dedd 100644 (file)
@@ -44,6 +44,7 @@ defmodule Pleroma.Object do
   def normalize(_, fetch_remote \\ true)
   # If we pass an Activity to Object.normalize(), we can try to use the preloaded object.
   # Use this whenever possible, especially when walking graphs in an O(N) loop!
+  def normalize(%Object{} = object, _), do: object
   def normalize(%Activity{object: %Object{} = object}, _), do: object
 
   # A hack for fake activities
@@ -129,6 +130,13 @@ defmodule Pleroma.Object do
     end
   end
 
+  def prune(%Object{data: %{"id" => id}} = object) do
+    with {:ok, object} <- Repo.delete(object),
+         {:ok, true} <- Cachex.del(:object_cache, "object:#{id}") do
+      {:ok, object}
+    end
+  end
+
   def set_cache(%Object{data: %{"id" => ap_id}} = object) do
     Cachex.put(:object_cache, "object:#{ap_id}", object)
     {:ok, object}