diff options
author | lambda <pleromagit@rogerbraun.net> | 2019-02-03 18:19:40 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2019-02-03 18:19:40 +0000 |
commit | 69a38644bc20f49390717f06be30cc2874f7b6f7 (patch) | |
tree | 68db3940ef91d35e1dc83f175716f126e15db716 /lib | |
parent | 8180de951e2ac1efc6cfb9f64d078d6a1b7d0c0e (diff) | |
parent | e61f0be9518aff867f4c56f5102723eddbcf40f1 (diff) | |
download | pleroma-69a38644bc20f49390717f06be30cc2874f7b6f7.tar.gz pleroma-69a38644bc20f49390717f06be30cc2874f7b6f7.zip |
Merge branch '589-fix-cache' into 'develop'
Resolve "Update object cache on favs/boosts"
Closes #589
See merge request pleroma/pleroma!764
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/object.ex | 43 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 2 |
2 files changed, 26 insertions, 19 deletions
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 1088bb5e4..7b46a3b05 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -42,24 +42,18 @@ defmodule Pleroma.Object do # Legacy objects can be mutated by anybody def authorize_mutation(%Object{}, %User{}), do: true - if Mix.env() == :test do - def get_cached_by_ap_id(ap_id) do - get_by_ap_id(ap_id) - end - else - 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) - end + 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) end def context_mapping(context) do @@ -90,4 +84,17 @@ defmodule Pleroma.Object 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} + end + + def update_and_set_cache(changeset) do + with {:ok, object} <- Repo.update(changeset) do + set_cache(object) + else + e -> e + end + end end diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 3b0cdfe71..4a2cc6738 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -285,7 +285,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do |> Map.put("#{property}_count", length(element)) |> Map.put("#{property}s", element), changeset <- Changeset.change(object, data: new_data), - {:ok, object} <- Repo.update(changeset), + {:ok, object} <- Object.update_and_set_cache(changeset), _ <- update_object_in_activities(object) do {:ok, object} end |