tarakan/lib/tarakan_web/changeset_errors.ex
Maxfield Luke af6077b9c3
All checks were successful
CI and deploy / Test (push) Successful in 4m52s
CI and deploy / Deploy production (push) Successful in 23s
Initial commit on Forgejo
Fresh repository history for elektrine/tarakan hosted at
https://git.elektrine.com/elektrine/tarakan.
2026-07-29 04:43:40 -04:00

15 lines
544 B
Elixir

defmodule TarakanWeb.ChangesetErrors do
@moduledoc """
Renders an Ecto changeset's errors into a plain, JSON-encodable map for API
responses (field => list of interpolated messages).
"""
@doc "Traverses `changeset` errors, interpolating `%{count}`-style placeholders."
def to_map(changeset) do
Ecto.Changeset.traverse_errors(changeset, fn {message, opts} ->
Regex.replace(~r"%{(\w+)}", message, fn _match, key ->
opts |> Keyword.get(String.to_existing_atom(key), key) |> to_string()
end)
end)
end
end