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

View file

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