refactor
This commit is contained in:
parent
aaf9c7127d
commit
a15ff055cc
4 changed files with 182 additions and 95 deletions
|
|
@ -124,6 +124,45 @@ defmodule Mv.Membership.Import.HeaderMapper do
|
|||
end)
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns a MapSet of normalized member field names.
|
||||
|
||||
This is the single source of truth for known member fields.
|
||||
Used to distinguish between member fields and custom fields.
|
||||
|
||||
## Returns
|
||||
|
||||
- `MapSet.t(String.t())` - Set of normalized member field names
|
||||
|
||||
## Examples
|
||||
|
||||
iex> HeaderMapper.known_member_fields()
|
||||
#MapSet<["email", "firstname", "lastname", "street", "postalcode", "city"]>
|
||||
"""
|
||||
@spec known_member_fields() :: MapSet.t(String.t())
|
||||
def known_member_fields do
|
||||
cached = Process.get({__MODULE__, :known_member_fields})
|
||||
|
||||
if cached do
|
||||
cached
|
||||
else
|
||||
fields =
|
||||
@member_field_variants_raw
|
||||
|> Map.keys()
|
||||
|> Enum.map(fn canonical ->
|
||||
# Normalize the canonical field name (e.g., :first_name -> "firstname")
|
||||
canonical
|
||||
|> Atom.to_string()
|
||||
|> String.replace("_", "")
|
||||
|> String.downcase()
|
||||
end)
|
||||
|> MapSet.new()
|
||||
|
||||
Process.put({__MODULE__, :known_member_fields}, fields)
|
||||
fields
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
Normalizes a CSV header string for comparison.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue