diff options
author | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-03-02 07:58:01 +0000 |
---|---|---|
committer | Haelwenn <contact+git.pleroma.social@hacktivis.me> | 2020-03-02 07:58:01 +0000 |
commit | 764a50f8a671cca69ca1f616754660506f8c18d8 (patch) | |
tree | 998fea663c91daf6515c879079a3c0a9fa0f5ad5 /lib/pleroma/object.ex | |
parent | 6ceef768cba23ab79a5545330746c7d8ce97ed64 (diff) | |
parent | 34f1d09f3abffd97672832382e48bb8d7f178e90 (diff) | |
download | pleroma-764a50f8a671cca69ca1f616754660506f8c18d8.tar.gz |
Merge branch 'feature/1482-activity_pub_transactions' into 'develop'
ActivityPub actions & side-effects in transaction
Closes #1482
See merge request pleroma/pleroma!2089
Diffstat (limited to 'lib/pleroma/object.ex')
-rw-r--r-- | lib/pleroma/object.ex | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 31c8020ae..9574432f0 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -5,6 +5,9 @@ defmodule Pleroma.Object do use Ecto.Schema + import Ecto.Query + import Ecto.Changeset + alias Pleroma.Activity alias Pleroma.Object alias Pleroma.Object.Fetcher @@ -12,9 +15,6 @@ defmodule Pleroma.Object do alias Pleroma.Repo alias Pleroma.User - import Ecto.Query - import Ecto.Changeset - require Logger @type t() :: %__MODULE__{} @@ -145,18 +145,18 @@ defmodule Pleroma.Object do # Legacy objects can be mutated by anybody def authorize_mutation(%Object{}, %User{}), do: true + @spec get_cached_by_ap_id(String.t()) :: Object.t() | nil def get_cached_by_ap_id(ap_id) do key = "object:#{ap_id}" - Cachex.fetch!(:object_cache, key, fn _ -> - object = get_by_ap_id(ap_id) - - if object do - {:commit, object} - else - {:ignore, object} - end - end) + with {:ok, nil} <- Cachex.get(:object_cache, key), + object when not is_nil(object) <- get_by_ap_id(ap_id), + {:ok, true} <- Cachex.put(:object_cache, key, object) do + object + else + {:ok, object} -> object + nil -> nil + end end def context_mapping(context) do |