zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/zenflows/gql/type.ex | 12+++++++++++-
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}