defmodule Mobilizon.Service.Export.Cachable do @moduledoc """ Behavior that export modules that use caching should implement """ alias Mobilizon.Actors.Actor alias Mobilizon.Events.Event alias Mobilizon.Posts.Post alias Mobilizon.Service.Export.{Feed, ICalendar} @callback create_cache(String.t()) :: any() @callback clear_caches(Event.t() | Post.t() | Actor.t()) :: any() @spec clear_all_caches(%{ :__struct__ => Mobilizon.Actors.Actor | Mobilizon.Events.Event | Mobilizon.Posts.Post, optional(any) => any }) :: {:error, boolean} | {:ok, boolean} def clear_all_caches(entity) do Feed.clear_caches(entity) ICalendar.clear_caches(entity) end end