Current section
Files
Jump to
Current section
Files
lib/kanta/cache.ex
defmodule Kanta.Cache do
@moduledoc """
Kanta Cache for minimalizing calls to DB
"""
use Nebulex.Cache,
otp_app: :kanta,
adapter: Nebulex.Adapters.Partitioned,
primary_storage_adapter: Nebulex.Adapters.Local
def generate_cache_key(prefix, params) do
Enum.reduce(params, prefix, fn {key, value}, acc ->
case value do
val when is_binary(val) ->
acc <> "_" <> to_string(key) <> "_" <> URI.encode_query(val)
val when is_list(val) ->
acc <> "_" <> to_string(key) <> "_" <> (Enum.into(val, %{}) |> URI.encode_query())
_val ->
acc
end
end)
end
end