mirror of
https://github.com/ash-project/ash_graphql.git
synced 2024-09-19 12:53:40 +12:00
fix: wrap type in non-null reference if allow_nil? is set to false
This commit is contained in:
parent
8f9e79e273
commit
ff06d5a540
4 changed files with 68 additions and 13 deletions
|
@ -2454,13 +2454,24 @@ defmodule AshGraphql.Resource do
|
|||
identifier: name,
|
||||
__reference__: AshGraphql.Resource.ref(env),
|
||||
name: to_string(name),
|
||||
type: nested_type_name
|
||||
type:
|
||||
if Keyword.get(
|
||||
constraints || [],
|
||||
:allow_nil?,
|
||||
true
|
||||
) do
|
||||
nested_type_name
|
||||
else
|
||||
%Absinthe.Blueprint.TypeReference.NonNull{
|
||||
of_type: nested_type_name
|
||||
}
|
||||
end
|
||||
}
|
||||
| fields
|
||||
]
|
||||
}
|
||||
|
||||
_ ->
|
||||
{type, constraints} ->
|
||||
{types,
|
||||
[
|
||||
%Absinthe.Blueprint.Schema.FieldDefinition{
|
||||
|
@ -2468,7 +2479,18 @@ defmodule AshGraphql.Resource do
|
|||
identifier: name,
|
||||
__reference__: AshGraphql.Resource.ref(env),
|
||||
name: to_string(name),
|
||||
type: do_field_type(attribute[:type], nil, nil, false)
|
||||
type:
|
||||
if Keyword.get(
|
||||
constraints || [],
|
||||
:allow_nil?,
|
||||
true
|
||||
) do
|
||||
do_field_type(type, nil, nil, false)
|
||||
else
|
||||
%Absinthe.Blueprint.TypeReference.NonNull{
|
||||
of_type: do_field_type(type, nil, nil, false)
|
||||
}
|
||||
end
|
||||
}
|
||||
| fields
|
||||
]}
|
||||
|
@ -2515,13 +2537,20 @@ defmodule AshGraphql.Resource do
|
|||
identifier: name,
|
||||
__reference__: AshGraphql.Resource.ref(env),
|
||||
name: to_string(name),
|
||||
type: nested_type_name
|
||||
type:
|
||||
if Keyword.get(constraints || [], :allow_nil?, true) do
|
||||
nested_type_name
|
||||
else
|
||||
%Absinthe.Blueprint.TypeReference.NonNull{
|
||||
of_type: nested_type_name
|
||||
}
|
||||
end
|
||||
}
|
||||
| fields
|
||||
]
|
||||
}
|
||||
|
||||
_ ->
|
||||
{type, constraints} ->
|
||||
{types,
|
||||
[
|
||||
%Absinthe.Blueprint.Schema.InputValueDefinition{
|
||||
|
@ -2529,7 +2558,14 @@ defmodule AshGraphql.Resource do
|
|||
identifier: name,
|
||||
__reference__: AshGraphql.Resource.ref(env),
|
||||
name: to_string(name),
|
||||
type: do_field_type(attribute[:type], nil, nil, false)
|
||||
type:
|
||||
if Keyword.get(constraints || [], :allow_nil?, true) do
|
||||
do_field_type(type, nil, nil, false)
|
||||
else
|
||||
%Absinthe.Blueprint.TypeReference.NonNull{
|
||||
of_type: do_field_type(type, nil, nil, false)
|
||||
}
|
||||
end
|
||||
}
|
||||
| fields
|
||||
]}
|
||||
|
|
|
@ -157,8 +157,11 @@ defmodule AshGraphql.AttributeTest do
|
|||
data["__type"]["inputFields"]
|
||||
|> Enum.find(fn field -> field["name"] == "foo" end)
|
||||
|
||||
assert foo_field["type"]["kind"] == "SCALAR"
|
||||
assert foo_field["type"]["name"] == "String"
|
||||
# non null field
|
||||
assert foo_field["type"]["kind"] == "NON_NULL"
|
||||
|
||||
assert foo_field["type"]["ofType"]["kind"] == "SCALAR"
|
||||
assert foo_field["type"]["ofType"]["name"] == "String"
|
||||
|
||||
bar_field =
|
||||
data["__type"]["inputFields"]
|
||||
|
@ -257,7 +260,11 @@ defmodule AshGraphql.AttributeTest do
|
|||
},
|
||||
%{
|
||||
"name" => "fooBar",
|
||||
"type" => %{"kind" => "SCALAR", "name" => "String", "ofType" => nil}
|
||||
"type" => %{
|
||||
"kind" => "NON_NULL",
|
||||
"name" => nil,
|
||||
"ofType" => %{"kind" => "SCALAR", "name" => "String"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -301,7 +308,11 @@ defmodule AshGraphql.AttributeTest do
|
|||
},
|
||||
%{
|
||||
"name" => "fooBar",
|
||||
"type" => %{"kind" => "SCALAR", "name" => "String", "ofType" => nil}
|
||||
"type" => %{
|
||||
"kind" => "NON_NULL",
|
||||
"name" => nil,
|
||||
"ofType" => %{"kind" => "SCALAR", "name" => "String"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -6,7 +6,9 @@ defmodule AshGraphql.Test.ConstrainedMap do
|
|||
fields: [
|
||||
foo_bar: [
|
||||
type: :string,
|
||||
allow_nil?: false
|
||||
constraints: [
|
||||
allow_nil?: false
|
||||
]
|
||||
],
|
||||
baz: [
|
||||
type: :integer
|
||||
|
|
|
@ -11,7 +11,10 @@ defmodule AshGraphql.Test.MapTypes do
|
|||
constraints(
|
||||
fields: [
|
||||
foo: [
|
||||
type: :string
|
||||
type: :string,
|
||||
constraints: [
|
||||
allow_nil?: false
|
||||
]
|
||||
],
|
||||
bar: [
|
||||
type: :integer
|
||||
|
@ -39,7 +42,10 @@ defmodule AshGraphql.Test.MapTypes do
|
|||
constraints(
|
||||
fields: [
|
||||
foo: [
|
||||
type: :string
|
||||
type: :string,
|
||||
constraints: [
|
||||
allow_nil?: false
|
||||
]
|
||||
],
|
||||
bar: [
|
||||
type: :integer
|
||||
|
|
Loading…
Reference in a new issue