Caching: Add caching behavior, add null implementation.

This commit is contained in:
lain 2020-12-21 11:42:53 +01:00
parent 95a9bdfc37
commit ee81a94ab2
2 changed files with 24 additions and 3 deletions

19
lib/pleroma/caching.ex Normal file
View File

@ -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

View File

@ -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