Configurable member field "required" flag and Vereinfacht-required fields closes #440 #441

Merged
moritz merged 13 commits from fix/required_fields into main 2026-02-23 23:28:36 +01:00
2 changed files with 18 additions and 9 deletions
Showing only changes of commit 717b8f5676 - Show all commits

View file

@ -38,7 +38,7 @@ defmodule Mv.Membership.Setting.Changes.UpdateSingleMemberField do
nil ->
{:error,
add_error(changeset,
field: :member_field_visibility,
field: :field,
message: "field argument is required"
)}
@ -51,20 +51,28 @@ defmodule Mv.Membership.Setting.Changes.UpdateSingleMemberField do
{:error,
add_error(
changeset,
field: :member_field_visibility,
field: :field,
message: "Invalid member field: #{field}"
)}
end
end
end
defp get_and_validate_boolean(changeset, arg_name) do
defp get_and_validate_boolean(changeset, :show_in_overview = arg_name) do
do_validate_boolean(changeset, arg_name, :show_in_overview)
end
defp get_and_validate_boolean(changeset, :required = arg_name) do
do_validate_boolean(changeset, arg_name, :member_field_required)
end
defp do_validate_boolean(changeset, arg_name, error_field) do
case Ash.Changeset.get_argument(changeset, arg_name) do
nil ->
{:error,
add_error(
changeset,
field: :member_field_visibility,
field: error_field,
message: "#{arg_name} argument is required"
)}
@ -75,7 +83,7 @@ defmodule Mv.Membership.Setting.Changes.UpdateSingleMemberField do
{:error,
add_error(
changeset,
field: :member_field_visibility,
field: error_field,
message: "#{arg_name} must be a boolean"
)}
end
@ -102,7 +110,8 @@ defmodule Mv.Membership.Setting.Changes.UpdateSingleMemberField do
ARRAY[$1::text],
to_jsonb($3::boolean),
true
)
),
updated_at = (now() AT TIME ZONE 'utc')
WHERE id = $4
RETURNING member_field_visibility, member_field_required
"""
@ -125,7 +134,7 @@ defmodule Mv.Membership.Setting.Changes.UpdateSingleMemberField do
{:ok, %{rows: []}} ->
{:error,
Invalid.exception(
field: :member_field_visibility,
field: :member_field_required,
message: "Settings not found"
)}
@ -134,7 +143,7 @@ defmodule Mv.Membership.Setting.Changes.UpdateSingleMemberField do
{:error,
Invalid.exception(
field: :member_field_visibility,
field: :member_field_required,
message: "Failed to update member field settings"
)}
end

View file

@ -149,4 +149,4 @@
"repo": "Elixir.Mv.Repo",
"schema": null,
"table": "settings"
}
}