UpdateSingleMemberField: error attribution, updated_at, snapshot newline
Attach errors to :field, :show_in_overview, :member_field_required. Set updated_at in SQL UPDATE. Add trailing newline to snapshot JSON.
This commit is contained in:
parent
0d1b776e78
commit
717b8f5676
2 changed files with 18 additions and 9 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue