We have parsing, validation, resolving, and a response object. We need to string them all together.
Notes:
the 'schema' is defined by the server types, an initial value, and any supported directives (although we'll probably skip those for first release) -- so that's the server's input
the client's input is a query document, a variable map, and an optional name of an operation to run. Not sure how these are actually delivered to us.
the output is the Response object in our Output.hs module
overall process is:
parse query (if it fails, respond with PreExecutionFailure)
transform the AST into something valid, ignoring type checks, but making sure that arguments aren't duplicated, no circular references. (if fail, PreExecutionError)
Note that we don't need the schema or the variables yet.
substitute in the variables. now everything is literal.
apply the directives. probably hard-code @skip & @include for the first release. if fail, execution error, and continue with fragments without bad directives
We now have something that's just objects & fragments
We have parsing, validation, resolving, and a response object. We need to string them all together.
Notes:
the 'schema' is defined by the server types, an initial value, and any supported directives (although we'll probably skip those for first release) -- so that's the server's input
the client's input is a query document, a variable map, and an optional name of an operation to run. Not sure how these are actually delivered to us.
the output is the Response object in our Output.hs module
overall process is: