Current section
Files
Jump to
Current section
Files
lib/stats_doggo/worker.ex
defmodule StatsDoggo.Worker do
require Logger
use GenServer
@app_tag "app:#{EnvConfig.get(:stats_doggo, :app_name)}"
@env_tag "env:#{EnvConfig.get(:stats_doggo, :app_env)}"
@default_tags [@env_tag, @app_tag]
def init(:ok) do
set_up_config()
connection = case EnvConfig.get(:stats_doggo, :enabled) do
"false" ->
Logger.info "StatsDoggo disabled, using StatsDoggo.ConnectionMock"
StatsDoggo.ConnectionMock
x ->
impl = Application.fetch_env!(:stats_doggo, :impl)
Logger.info "StatsDoggo #{inspect(x)}, using #{inspect(impl)}"
impl
end
connection.init
{:ok, connection}
end
def start_link do
GenServer.start_link(__MODULE__, :ok, name: __MODULE__)
end
def handle_cast({command, [name, value, opts]}, connection) do
apply(connection, command, [name, value, default_opts(opts)])
{:noreply, connection}
end
defp default_opts(opts) do
opts |> Keyword.merge(tags: Keyword.get(opts, :tags, []) |> default_tags())
end
defp default_tags(tags) do
@default_tags ++ tags
end
defp set_up_config do
Application.put_env(:statix, :host, EnvConfig.get(:stats_doggo, :override_statix_host))
end
end