review: removed leftovers and ash use builtin validation functions
This commit is contained in:
parent
2ab3332941
commit
7f034740b0
2 changed files with 18 additions and 61 deletions
|
|
@ -9,7 +9,7 @@ defmodule Mv.Membership.Member do
|
|||
end
|
||||
|
||||
actions do
|
||||
defaults [:read]
|
||||
defaults [:read, :destroy]
|
||||
|
||||
create :create_member do
|
||||
primary? true
|
||||
|
|
@ -34,11 +34,6 @@ defmodule Mv.Membership.Member do
|
|||
change manage_relationship(:properties, type: :create)
|
||||
end
|
||||
|
||||
destroy :destroy do
|
||||
primary? true
|
||||
change Ash.Resource.Change.Builtins.cascade_destroy(:properties)
|
||||
end
|
||||
|
||||
update :update_member do
|
||||
primary? true
|
||||
require_atomic? false
|
||||
|
|
@ -73,71 +68,33 @@ defmodule Mv.Membership.Member do
|
|||
validate present(:email)
|
||||
|
||||
# Birth date not in the future
|
||||
validate fn changeset, _ ->
|
||||
birth_date = Ash.Changeset.get_attribute(changeset, :birth_date)
|
||||
|
||||
if birth_date && Date.compare(birth_date, Date.utc_today()) == :gt do
|
||||
{:error, field: :birth_date, message: "cannot be in the future"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end
|
||||
validate compare(:birth_date, less_than_or_equal_to: &Date.utc_today/0),
|
||||
where: [present(:birth_date)],
|
||||
message: "cannot be in the future"
|
||||
|
||||
# Join date not in the future
|
||||
validate fn changeset, _ ->
|
||||
join_date = Ash.Changeset.get_attribute(changeset, :join_date)
|
||||
validate compare(:join_date, less_than_or_equal_to: &Date.utc_today/0),
|
||||
where: [present(:join_date)],
|
||||
message: "cannot be in the future"
|
||||
|
||||
if join_date && Date.compare(join_date, Date.utc_today()) == :gt do
|
||||
{:error, field: :join_date, message: "cannot be in the future"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
||||
# Exit date not before join date
|
||||
validate fn changeset, _ ->
|
||||
join_date = Ash.Changeset.get_attribute(changeset, :join_date)
|
||||
exit_date = Ash.Changeset.get_attribute(changeset, :exit_date)
|
||||
validate compare(:exit_date, greater_than: :join_date),
|
||||
where: [present([:join_date, :exit_date])],
|
||||
message: "cannot be before join date"
|
||||
|
||||
if join_date && exit_date && Date.compare(exit_date, join_date) == :lt do
|
||||
{:error, field: :exit_date, message: "cannot be before join date"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
||||
# Phone number format (only if set)
|
||||
validate fn changeset, _ ->
|
||||
phone = Ash.Changeset.get_attribute(changeset, :phone_number)
|
||||
validate match(:phone_number, ~r/^\+?[0-9\- ]{6,20}$/),
|
||||
where: [present(:phone_number)],
|
||||
message: "is not a valid phone number"
|
||||
|
||||
if phone && !Regex.match?(~r/^\+?[0-9\- ]{6,20}$/, phone) do
|
||||
{:error, field: :phone_number, message: "is not a valid phone number"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
||||
# Postal code format (only if set)
|
||||
validate fn changeset, _ ->
|
||||
postal_code = Ash.Changeset.get_attribute(changeset, :postal_code)
|
||||
validate match(:postal_code, ~r/^\d{5}$/),
|
||||
where: [present(:postal_code)],
|
||||
message: "must consist of 5 digits"
|
||||
|
||||
if postal_code && !Regex.match?(~r/^\d{5}$/, postal_code) do
|
||||
{:error, field: :postal_code, message: "must consist of 5 digits"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
||||
# paid must be boolean if set
|
||||
validate fn changeset, _ ->
|
||||
paid = Ash.Changeset.get_attribute(changeset, :paid)
|
||||
|
||||
if not is_nil(paid) and not is_boolean(paid) do
|
||||
{:error, field: :paid, message: "must be true or false"}
|
||||
else
|
||||
:ok
|
||||
end
|
||||
end
|
||||
|
||||
# Email validation with EctoCommons.EmailValidator
|
||||
validate fn changeset, _ ->
|
||||
|
|
@ -216,6 +173,6 @@ defmodule Mv.Membership.Member do
|
|||
end
|
||||
|
||||
relationships do
|
||||
has_many :properties, Mv.Membership.Property, destination_attribute: :member_id
|
||||
has_many :properties, Mv.Membership.Property
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue