sailor
sailor copied to clipboard
When trying to make a query named "Cases" - exceptions are thrown because it's not escaped somewhere
Describe the bug
When trying to use this query, it fails with [Nette\InvalidArgumentException] Value 'Case' is not valid class name.
query Foo {
cases {
edges {
node {
id
}
}
}
}
Expected behavior/Solution
I think the class name should be escaped here: https://github.com/spawnia/sailor/blob/master/src/Codegen/ObjectLikeBuilder.php#L35 with Escaper::escapeClassName($name),
Steps to reproduce Try generating client code for this graphql query:
query Foo {
cases {
edges {
node {
id
}
}
}
}
Output/Logs
Click to expand
$ vendor/bin/sailor -vvv
Generating code for endpoint ordrestyring...
In ClassType.php line 164:
[Nette\InvalidArgumentException]
Value 'Case' is not valid class name.
Exception trace:
at /app/packages/backend/vendor/nette/php-generator/src/PhpGenerator/ClassType.php:164
Nette\PhpGenerator\ClassType->setName() at /app/packages/backend/vendor/nette/php-generator/src/PhpGenerator/ClassType.php:133
Nette\PhpGenerator\ClassType->__construct() at /app/packages/backend/vendor/spawnia/sailor/src/Codegen/ObjectLikeBuilder.php:36
Spawnia\Sailor\Codegen\ObjectLikeBuilder->__construct() at /app/packages/backend/vendor/spawnia/sailor/src/Codegen/OperationGenerator.php:325
Spawnia\Sailor\Codegen\OperationGenerator->makeObjectLikeBuilder() at /app/packages/backend/vendor/spawnia/sailor/src/Codegen/OperationGenerator.php:227
Spawnia\Sailor\Codegen\OperationGenerator->Spawnia\Sailor\Codegen\{closure}() at /app/packages/backend/vendor/webonyx/graphql-php/src/Language/Visitor.php:453
GraphQL\Language\Visitor::GraphQL\Language\{closure}() at /app/packages/backend/vendor/webonyx/graphql-php/src/Language/Visitor.php:263
GraphQL\Language\Visitor::visit() at /app/packages/backend/vendor/spawnia/sailor/src/Codegen/OperationGenerator.php:305
Spawnia\Sailor\Codegen\OperationGenerator->generate() at /app/packages/backend/vendor/spawnia/sailor/src/Codegen/Generator.php:55
Spawnia\Sailor\Codegen\Generator->generate() at /app/packages/backend/vendor/spawnia/sailor/src/Codegen/Writer.php:26
Spawnia\Sailor\Codegen\Writer->write() at /app/packages/backend/vendor/spawnia/sailor/src/Console/CodegenCommand.php:39
Spawnia\Sailor\Console\CodegenCommand->execute() at /app/packages/backend/vendor/symfony/console/Command/Command.php:298
Symfony\Component\Console\Command\Command->run() at /app/packages/backend/vendor/symfony/console/Application.php:1040
Symfony\Component\Console\Application->doRunCommand() at /app/packages/backend/vendor/symfony/console/Application.php:301
Symfony\Component\Console\Application->doRun() at /app/packages/backend/vendor/symfony/console/Application.php:171
Symfony\Component\Console\Application->run() at /app/packages/backend/vendor/spawnia/sailor/sailor:22
include() at /app/packages/backend/vendor/bin/sailor:115
codegen [-c|--config CONFIG] [--] [<endpoint>]