Current section
Files
Jump to
Current section
Files
lib/nostrum/cache/base.ex
defmodule Nostrum.Cache.Base do
# Utilities for nostrum caches.
@moduledoc since: "0.8.0"
@moduledoc false
@dialyzer {:nowarn_function, get_cache_module: 2, get_cache_options: 1}
@guild_cache_config Application.compile_env(:nostrum, [:caches, :guilds])
@channel_guild_mapping_config Application.compile_env(:nostrum, [
:caches,
:channel_guild_mapping
])
@member_cache_config Application.compile_env(:nostrum, [:caches, :members])
@message_cache_config Application.compile_env(:nostrum, [:caches, :messages])
@presence_cache_config Application.compile_env(:nostrum, [:caches, :presences])
@user_cache_config Application.compile_env(:nostrum, [:caches, :users])
@cache_map %{
guilds: @guild_cache_config,
channel_guild_mapping: @channel_guild_mapping_config,
members: @member_cache_config,
messages: @message_cache_config,
presences: @presence_cache_config,
users: @user_cache_config
}
def mnesia_note,
do: """
Please note that this module is only compiled if Mnesia is available on
your system. See the Mnesia section of the [State](functionality/state.md)
documentation for more information.
To retrieve the table name used by this cache, use `table/0`.
"""
@moduledoc since: "0.10.0"
def get_cache_module(cache_name, default) do
case @cache_map do
%{^cache_name => nil} -> default
%{^cache_name => {module, _opts}} when is_atom(module) -> module
%{^cache_name => module} when is_atom(module) -> module
end
end
@moduledoc since: "0.10.0"
def get_cache_options(cache_name) do
case @cache_map do
%{^cache_name => nil} -> []
%{^cache_name => {_, opts}} -> opts
%{^cache_name => _} -> []
end
end
end