farmbot_os/farmbot_core/lib/asset_storage/settings/helpers.ex

59 lines
1.7 KiB
Elixir

defmodule Farmbot.Asset.Settings.Helpers do
import Farmbot.Config, only: [update_config_value: 4]
defmacro bool(kind) do
quote do
def apply_kv(unquote(kind), nil = new, old) do
log(unquote(kind), old, new)
update_config_value(:bool, "settings", unquote(kind), nil)
end
def apply_kv(unquote(kind), new, old) when is_boolean(new) do
log(unquote(kind), old, new)
update_config_value(:bool, "settings", unquote(kind), new)
end
end
end
defmacro string(kind) do
quote do
def apply_kv(unquote(kind), nil = new, old) do
log(unquote(kind), old, new)
update_config_value(:string, "settings", unquote(kind), nil)
end
def apply_kv(unquote(kind), new, old) when is_binary(new) do
log(unquote(kind), old, new)
update_config_value(:string, "settings", unquote(kind), new)
end
end
end
defmacro float(kind) do
quote do
def apply_kv(unquote(kind), nil = new, old) do
log(unquote(kind), old, new)
update_config_value(:float, "settings", unquote(kind), nil)
end
def apply_kv(unquote(kind), new, old) when is_number(new) do
log(unquote(kind), old, new)
update_config_value(:float, "settings", unquote(kind), new / 1)
end
end
end
defmacro fw_float(kind) do
quote do
def apply_kv(unquote(kind), nil = new, old) do
log(unquote(kind), old, new)
update_config_value(:float, "hardware_params", unquote(kind), nil)
end
def apply_kv(unquote(kind), new, old) when is_number(new) do
log(unquote(kind), old, new)
update_config_value(:float, "hardware_params", unquote(kind), new / 1)
end
end
end
end