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/pleroma/object.ex | |
parent | 8180de951e2ac1efc6cfb9f64d078d6a1b7d0c0e (diff) | |
parent | e61f0be9518aff867f4c56f5102723eddbcf40f1 (diff) | |
download | pleroma-69a38644bc20f49390717f06be30cc2874f7b6f7.tar.gz |
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/pleroma/object.ex')
-rw-r--r-- | lib/pleroma/object.ex | 43 |
1 files changed, 25 insertions, 18 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 |