[day-03] create custom scalar for uuid

Graphql doesn't support uuid natively. So, we must create a custom
scalar to handle this type.
This commit is contained in:
Joao P Dubas 2021-06-24 00:10:17 +00:00
parent 8787973075
commit c5612f9398

View File

@ -0,0 +1,32 @@
defmodule WabanexWeb.Schema.Types.Custom.UUID4 do
use Absinthe.Schema.Notation
alias Ecto.UUID
scalar :uuid4, name: "UUID4" do
description("""
The `UUID4` scalar type represents UUID4 compliant string data, represented as UTF-8
character sequences. The UUID4 type is most often used to represent unique
human-readable ID strings.
""")
serialize(&encode/1)
parse(&decode/1)
end
@spec decode(Absinthe.Blueprint.Input.String.t()) :: {:ok, term()} | :error
@spec decode(Absinthe.Blueprint.Input.Null.t()) :: {:ok, nil}
defp decode(%Absinthe.Blueprint.Input.String{value: value}) do
UUID.cast(value)
end
defp decode(%Absinthe.Blueprint.Input.Null{}) do
{:ok, nil}
end
defp decode(_) do
:error
end
defp encode(value), do: value
end