Validate number of places being a positive integer
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -212,7 +212,6 @@ defmodule Mobilizon.Federation.ActivityPub do
|
||||
else
|
||||
err ->
|
||||
Logger.error("Something went wrong while creating an activity")
|
||||
Logger.debug(inspect(err))
|
||||
err
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,24 +2,44 @@ defmodule Mobilizon.GraphQL.Helpers.Error do
|
||||
@moduledoc """
|
||||
Helper functions for Mobilizon.GraphQL
|
||||
"""
|
||||
alias Ecto.Changeset
|
||||
|
||||
def handle_errors(fun) do
|
||||
fn source, args, info ->
|
||||
case Absinthe.Resolution.call(fun, source, args, info) do
|
||||
{:error, %Ecto.Changeset{} = changeset} -> format_changeset(changeset)
|
||||
val -> val
|
||||
{:error, %Changeset{} = changeset} ->
|
||||
format_changeset(changeset)
|
||||
|
||||
{:error, _, %Changeset{} = changeset} ->
|
||||
format_changeset(changeset)
|
||||
|
||||
val ->
|
||||
val
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def format_changeset(changeset) do
|
||||
def format_changeset(%Changeset{changes: changes} = changeset) do
|
||||
# {:error, [email: {"has already been taken", []}]}
|
||||
|
||||
errors =
|
||||
changeset.errors
|
||||
|> Enum.map(fn {key, {value, _context}} ->
|
||||
[message: "#{value}", details: key]
|
||||
Enum.reduce(changes, [], fn {_key, value}, acc ->
|
||||
case value do
|
||||
%Changeset{} ->
|
||||
{:error, errors} = format_changeset(value)
|
||||
acc ++ errors
|
||||
|
||||
_ ->
|
||||
acc
|
||||
end
|
||||
end)
|
||||
|
||||
errors = errors ++ Enum.map(changeset.errors, &transform_error/1)
|
||||
|
||||
{:error, errors}
|
||||
end
|
||||
|
||||
defp transform_error({key, {value, _context}}) do
|
||||
[message: "#{value}", details: key]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -66,6 +66,8 @@ defmodule Mobilizon.Events.EventOptions do
|
||||
@doc false
|
||||
@spec changeset(t, map) :: Ecto.Changeset.t()
|
||||
def changeset(%__MODULE__{} = event_options, attrs) do
|
||||
cast(event_options, attrs, @attrs)
|
||||
event_options
|
||||
|> cast(attrs, @attrs)
|
||||
|> validate_number(:maximum_attendee_capacity, greater_than_or_equal_to: 0)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user