Configurable member field "required" flag and Vereinfacht-required fields closes #440 #441
2 changed files with 18 additions and 9 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -149,4 +149,4 @@
|
||||||
"repo": "Elixir.Mv.Repo",
|
"repo": "Elixir.Mv.Repo",
|
||||||
"schema": null,
|
"schema": null,
|
||||||
"table": "settings"
|
"table": "settings"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue