total rebase
[anni] / test / support / null_cache.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.NullCache do
6   @moduledoc """
7   A module simulating a permanently empty cache.
8   """
9   @behaviour Pleroma.Caching
10
11   @impl true
12   def get!(_, _), do: nil
13
14   @impl true
15   def put(_, _, _, _ \\ nil), do: {:ok, true}
16
17   @impl true
18   def stream!(_, _), do: []
19
20   @impl true
21   def get(_, _), do: {:ok, nil}
22
23   @impl true
24   def fetch!(_, key, func) do
25     case func.(key) do
26       {_, res} -> res
27       res -> res
28     end
29   end
30
31   @impl true
32   def fetch(_, key, func), do: func.(key)
33
34   @impl true
35   def get_and_update(_, _, func) do
36     func.(nil)
37   end
38
39   @impl true
40   def expire_at(_, _, _), do: {:ok, true}
41
42   @impl true
43   def expire(_, _, _), do: {:ok, true}
44
45   @impl true
46   def exists?(_, _), do: {:ok, false}
47
48   @impl true
49   def execute!(_, func) do
50     func.(:nothing)
51   end
52
53   @impl true
54   def del(_, _), do: {:ok, true}
55 end