Caching: Add caching behavior, add null implementation.
This commit is contained in:
parent
95a9bdfc37
commit
ee81a94ab2
2 changed files with 24 additions and 3 deletions
19
lib/pleroma/caching.ex
Normal file
19
lib/pleroma/caching.ex
Normal 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
|
|
@ -21,9 +21,11 @@ def stream!(_, _), 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
|
||||
|
|
Loading…
Reference in a new issue