graphql-laravel
graphql-laravel copied to clipboard
Rules don't work an array of a custom type input
Versions:
- graphql-laravel Version: 8.3.0
- Laravel Version: 9.10
- PHP Version: 8.1.8
Description:
Rules don't work properly when they are in a type inside of a list.
I have a mutation called BatchMint with the following args:
public function args(): array
{
return [
'collectionId' => [
'type' => GraphQL::type('BigInt!'),
'description' => 'The Collection ID to mint from.',
],
'recipients' => [
'type' => GraphQL::type('[MintRecipient!]!'),
],
];
}
MintRecipient has the following fields:
public function fields(): array
{
return [
'address' => [
'type' => GraphQL::type('String!'),
'description' => 'The recipient of the token.',
'rules' => ['filled', new ValidSubstrateAddress],
],
'createParams' => [
'type' => GraphQL::type('CreateTokenParams'),
'rules' => ['prohibits:mintParams'],
],
'mintParams' => [
'type' => GraphQL::type('MintTokenParams'),
'rules' => ['prohibits:createParams'],
],
];
}
The rules on the address field work fine. But the prohibits, required_unless, required_without, or any rule that makes a reference to another field don't work. I know those rules work fine when they are in the arguments but they don't work when they are in the array of types.
Can you create a PR with a test showing the (unexpected) behavior? The idea being that the test is green but based on the current behavior to have a point of reference.
Sure, I can do it in a few hours 😄
@mfn here it is probably not the best names but enough to understand what is happening https://github.com/rebing/graphql-laravel/pull/931
Appreciated, will take a look after I'm back from vacation
Thank you, hope you enjoy your vacation. I've just left to mine, otherwise I could take a better look at this 😅
yeah, right now this only works if you do: prohibits:recipients.mintParams so it is dependent on the whole path which is not ideal
Maybe this is something for a known limitation section, with an example how to work with this?