Open theduke opened 5 years ago
Sorry for the delay replying to this. My understanding of the problem is that sending the entire document is the right behaviour. We send operationName
as part of actual request for the server to pick one operation from the document. This is how I understand the references to operationName in the spec, e.g. https://facebook.github.io/graphql/June2018/#sec-Executing-Requests
Of course we could parse the query and emit only the operation we want (potentially minified) as a size optimization, but I think the current behaviour is correct.
Mhm, I was definitely getting the wrong response data for the first defined query though which is the only reason I checked the generated code.
Maybe the wrong operationName was passed.
That could be the case, I'll check if the logic there is sound. Marking this as a bug for now.
We should pass the right operationName, but if that is not enough it wouldn't be too hard to filter out not-selected operations from the document (keeping the selected one and fragments) and send that in the request. I'll work on this in priority as soon as I have the time.
hmmm, it looks like OPERATION_NAME is defined multiple times in modules generated through the CLI, but this issue is about the custom derive API, I'll continue investigating
selected_operation
. Still investigating.Note that schema element usage is tracked due to #116. The same could be done for the query side as well.
Hmm. At least Github tends to give back line/column information based on the query sent. Right now, that corresponds with the actual query file, but trimming down would mean that it doesn't. Replacing unused structure lines with empty lines would allow the line numbers to still correspond. But this then loses on deduplication of static data and may increase binary size (granted, a small issue).
Currently, using the same file and
selected_operation
in the custom derive does not work.The generated
const QUERY = ""...
is the same string for all the generated modules, re-using the value of the first generated.Eg:
Result: