commit 817cbda24343dd313c721e7ac7e911c651a38613
parent 1facaa5ef30ca15d94292a409eeb9314c4923870
Author: srfsh <dev@srf.sh>
Date: Wed, 14 Sep 2022 12:22:18 +0300
Zenflows.GQL.Type: fix json parsing
Diffstat:
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/zenflows/gql/type.ex b/src/zenflows/gql/type.ex
@@ -43,7 +43,7 @@ end
@desc "A JSON document encoded as string."
scalar :json, name: "JSON" do
- parse &Jason.decode/1
+ parse &json_parse/1
serialize & &1
end
@@ -117,6 +117,16 @@ end
defp url64_parse(%Input.Null{}), do: {:ok, nil}
defp url64_parse(_), do: :error
+@spec json_parse(Input.t()) :: {:ok, String.t() | nil} | :error
+defp json_parse(%Input.String{value: v}) do
+ case Jason.decode(v) do
+ {:ok, map} -> {:ok, map}
+ {:error, _} -> :error
+ end
+end
+defp json_parse(%Input.Null{}), do: {:ok, nil}
+defp json_parse(_), do: :error
+
@spec id_parse(Input.t()) :: {:ok, ID.t() | nil} | :error
def id_parse(%Input.String{value: v}), do: ID.cast(v)
def id_parse(%Input.Null{}), do: {:ok, nil}