Packages
ex_esdb
0.0.1-alfa
0.11.0
0.10.0
0.9.0
0.8.0
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14-alpha
0.0.13-alpha
0.0.12-alpha
0.0.11-alpha
0.0.10-alpha
0.0.9-alpha
0.0.8-alpha
0.0.6-alpha
0.0.5-alpha
0.0.4-alpha
0.0.3-alpha
0.0.2-alfa
0.0.1-alfa
ExESDB is a reincarnation of rabbitmq/khepri, specialized for use as a BEAM-native event store.
Current section
Files
Jump to
Current section
Files
lib/options.ex
defmodule ExESDB.Options do
@moduledoc false
alias ExESDB.EnVars, as: EnVars
def esdb_khepri, do: Application.get_env(:ex_esdb, :khepri)
def esdb_khepri(key), do: esdb_khepri()[key]
def data_dir do
case System.get_env(EnVars.data_dir()) do
nil -> esdb_khepri(:data_dir) || "/data"
data_dir -> data_dir
end
end
def store_id do
case System.get_env(EnVars.store_id()) do
nil -> esdb_khepri(:store_id) || :ex_store
store_id -> to_unique_atom(store_id)
end
end
def timeout do
case System.get_env(EnVars.timeout()) do
nil -> esdb_khepri(:timeout) || 10_000
timeout -> String.to_integer(timeout)
end
end
def db_type do
case System.get_env(EnVars.db_type()) do
nil -> esdb_khepri(:db_type) || :single
db_type -> String.to_atom(db_type)
end
end
def seed_nodes do
case System.get_env(EnVars.seed_nodes()) do
nil -> esdb_khepri(:seeds) || [node()]
seeds -> to_atoms_list(seeds)
end
end
defp to_atoms_list(seeds) do
seeds
|> String.split(",")
|> Enum.map(&clean_node/1)
|> Enum.map(&to_unique_atom/1)
end
defp clean_node(node),
do:
String.trim(node)
|> String.downcase()
|> String.replace(" ", "")
|> String.replace(",", "")
|> String.replace(".", "")
|> String.replace(":", "")
defp to_unique_atom(candidate) do
try do
String.to_existing_atom(candidate)
rescue
_ -> String.to_atom(candidate)
end
end
end