formatting and refactor member fields constant

This commit is contained in:
carla 2025-12-02 10:02:52 +01:00 committed by Rafael Epplée
parent e81aecce48
commit dce2053ce7
6 changed files with 149 additions and 104 deletions

View file

@ -42,6 +42,10 @@ defmodule Mv.Membership.Member do
@member_search_limit 10
@default_similarity_threshold 0.2
# Use constants from Mv.Constants for member fields
# This ensures consistency across the codebase
@member_fields Mv.Constants.member_fields()
postgres do
table "members"
repo Mv.Repo
@ -58,21 +62,7 @@ defmodule Mv.Membership.Member do
# user_id is NOT in accept list to prevent direct foreign key manipulation
argument :user, :map, allow_nil?: true
accept [
:first_name,
:last_name,
:email,
:birth_date,
:paid,
:phone_number,
:join_date,
:exit_date,
:notes,
:city,
:street,
:house_number,
:postal_code
]
accept @member_fields
change manage_relationship(:custom_field_values, type: :create)
@ -105,21 +95,7 @@ defmodule Mv.Membership.Member do
# user_id is NOT in accept list to prevent direct foreign key manipulation
argument :user, :map, allow_nil?: true
accept [
:first_name,
:last_name,
:email,
:birth_date,
:paid,
:phone_number,
:join_date,
:exit_date,
:notes,
:city,
:street,
:house_number,
:postal_code
]
accept @member_fields
change manage_relationship(:custom_field_values, on_match: :update, on_no_match: :create)

View file

@ -114,26 +114,26 @@ defmodule Mv.Membership.Setting do
# Validate that member_field_visibility map contains only boolean values
# This allows dynamic fields without hardcoding specific field names
validate fn changeset, _context ->
visibility = Ash.Changeset.get_attribute(changeset, :member_field_visibility)
visibility = Ash.Changeset.get_attribute(changeset, :member_field_visibility)
if visibility && is_map(visibility) do
invalid_entries =
Enum.filter(visibility, fn {_key, value} ->
not is_boolean(value)
end)
if visibility && is_map(visibility) do
invalid_entries =
Enum.filter(visibility, fn {_key, value} ->
not is_boolean(value)
end)
if Enum.empty?(invalid_entries) do
:ok
else
{:error,
field: :member_field_visibility,
message: "All values in member_field_visibility must be booleans"}
end
else
:ok
end
end,
on: [:create, :update]
if Enum.empty?(invalid_entries) do
:ok
else
{:error,
field: :member_field_visibility,
message: "All values in member_field_visibility must be booleans"}
end
else
:ok
end
end,
on: [:create, :update]
end
attributes do
@ -151,7 +151,8 @@ defmodule Mv.Membership.Setting do
attribute :member_field_visibility, :map,
allow_nil?: true,
public?: true,
description: "Configuration for member field visibility in overview (JSONB map). Keys are member field names (atoms), values are booleans."
description:
"Configuration for member field visibility in overview (JSONB map). Keys are member field names (atoms), values are booleans."
timestamps()
end