mobilizon/lib/web/cache/cache.ex

35 lines
1.4 KiB
Elixir
Raw Normal View History

2020-01-26 21:36:50 +01:00
defmodule Mobilizon.Web.Cache do
2019-09-17 23:39:26 +02:00
@moduledoc """
Facade module which provides access to all cached data.
"""
alias Mobilizon.Actors.Actor
2020-01-26 21:36:50 +01:00
alias Mobilizon.Web.Cache.ActivityPub
import Mobilizon.Service.Guards, only: [is_valid_string: 1]
2019-09-17 23:39:26 +02:00
@caches [:activity_pub, :feed, :ics]
@type local_actor :: %Actor{domain: nil}
2019-09-17 23:39:26 +02:00
@doc """
Clears all caches for a local actor.
2019-09-17 23:39:26 +02:00
"""
@spec clear_cache(%Actor{domain: nil, preferred_username: String.t()}) :: :ok
def clear_cache(%Actor{preferred_username: preferred_username, domain: nil})
when is_valid_string(preferred_username) do
2019-09-17 23:39:26 +02:00
Enum.each(@caches, &Cachex.del(&1, "actor_" <> preferred_username))
end
defdelegate get_actor_by_name(name), to: ActivityPub
2019-09-17 23:39:26 +02:00
defdelegate get_local_actor_by_name(name), to: ActivityPub
defdelegate get_public_event_by_uuid_with_preload(uuid), to: ActivityPub
defdelegate get_comment_by_uuid_with_preload(uuid), to: ActivityPub
defdelegate get_resource_by_uuid_with_preload(uuid), to: ActivityPub
defdelegate get_todo_list_by_uuid_with_preload(uuid), to: ActivityPub
defdelegate get_todo_by_uuid_with_preload(uuid), to: ActivityPub
defdelegate get_member_by_uuid_with_preload(uuid), to: ActivityPub
defdelegate get_post_by_slug_with_preload(slug), to: ActivityPub
defdelegate get_discussion_by_slug_with_preload(slug), to: ActivityPub
2019-09-17 23:39:26 +02:00
defdelegate get_relay, to: ActivityPub
end