feat: validate config
This commit is contained in:
parent
b6d53d2826
commit
4997819c73
1 changed files with 30 additions and 0 deletions
|
|
@ -85,5 +85,35 @@ defmodule Mv.Config do
|
||||||
defp get_csv_import_config(key, default) do
|
defp get_csv_import_config(key, default) do
|
||||||
Application.get_env(:mv, :csv_import, [])
|
Application.get_env(:mv, :csv_import, [])
|
||||||
|> Keyword.get(key, default)
|
|> Keyword.get(key, default)
|
||||||
|
|> parse_and_validate_integer(default)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Parses and validates integer configuration values.
|
||||||
|
#
|
||||||
|
# Accepts:
|
||||||
|
# - Integer values (passed through)
|
||||||
|
# - String integers (e.g., "1000") - parsed to integer
|
||||||
|
# - Invalid values (e.g., "abc", nil) - falls back to default
|
||||||
|
#
|
||||||
|
# Always clamps the result to a minimum of 1 to ensure positive values.
|
||||||
|
#
|
||||||
|
# Note: We don't log warnings for unparseable values because:
|
||||||
|
# - These functions may be called frequently (e.g., on every request)
|
||||||
|
# - Logging would create excessive log spam
|
||||||
|
# - The fallback to default provides a safe behavior
|
||||||
|
# - Configuration errors should be caught during deployment/testing
|
||||||
|
defp parse_and_validate_integer(value, _default) when is_integer(value) do
|
||||||
|
max(1, value)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp parse_and_validate_integer(value, default) when is_binary(value) do
|
||||||
|
case Integer.parse(value) do
|
||||||
|
{int, _remainder} -> max(1, int)
|
||||||
|
:error -> default
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp parse_and_validate_integer(_value, default) do
|
||||||
|
default
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue