Current section
Files
Jump to
Current section
Files
lib/email/configurator.ex
defmodule Rivet.Email.Configurator do
defmacro __using__(opts) do
quote location: :keep, bind_quoted: [opts: opts] do
use Rivet.Utils.LazyCache
@persist_for 600_000
def get({name, nil}), do: get_(name)
def get({name, site}) do
case get_("#{name}/#{site}") do
{:ok, _} = pass -> pass
_ -> get_(name)
end
end
def get(name), do: get_(name)
defp get_(name) do
case lookup(name) do
[{_, target, _}] ->
{:ok, target}
_ ->
case Rivet.Email.Template.one(name: "//CONFIG/#{name}") do
{:ok, c} ->
with {:ok, data} <- Jason.decode(c.data) do
data = Transmogrify.transmogrify(data)
insert(name, data, @persist_for)
{:ok, data}
end
_ ->
{:error, :not_found}
end
end
end
end
end
end