commit: ee81a94ab2631e994f7d963d74fadf1ce0704837
parent 95a9bdfc374a013be47e74b25bdba5d91f51948b
Author: lain <lain@soykaf.club>
Date: Mon, 21 Dec 2020 11:42:53 +0100
Caching: Add caching behavior, add null implementation.
Diffstat:
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/lib/pleroma/caching.ex b/lib/pleroma/caching.ex
@@ -0,0 +1,19 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Caching do
+ @callback get!(Cachex.cache(), any()) :: any()
+ @callback get(Cachex.cache(), any()) :: {atom(), any()}
+ @callback put(Cachex.cache(), any(), any(), Keyword.t()) :: {Cachex.status(), boolean()}
+ @callback put(Cachex.cache(), any(), any()) :: {Cachex.status(), boolean()}
+ @callback fetch!(Cachex.cache(), any(), function() | nil) :: any()
+ # @callback del(Cachex.cache(), any(), Keyword.t()) :: {Cachex.status(), boolean()}
+ @callback del(Cachex.cache(), any()) :: {Cachex.status(), boolean()}
+ @callback stream!(Cachex.cache(), any()) :: Enumerable.t()
+ @callback expire_at(Cachex.cache(), binary(), number()) :: {Cachex.status(), boolean()}
+ @callback exists?(Cachex.cache(), any()) :: {Cachex.status(), boolean()}
+ @callback execute!(Cachex.cache(), function()) :: any()
+ @callback get_and_update(Cachex.cache(), any(), function()) ::
+ {:commit | :ignore, any()}
+end
diff --git a/test/support/null_cache.ex b/test/support/null_cache.ex
@@ -21,9 +21,11 @@ defmodule Pleroma.NullCache do
def get(_, _), do: {:ok, nil}
@impl true
- def fetch!(_, _, func) do
- {_, res} = func.()
- res
+ def fetch!(_, key, func) do
+ case func.(key) do
+ {_, res} -> res
+ res -> res
+ end
end
@impl true