Comments (2)
Two options here that exist today:
First, customize the graphql.Client
-- basically, write your own implementation of the interface (likely extending the provided one similar to how auth works) that extracts those extensions. (Actually, we already parse them to a map[string]interface{}
.) That works well if you want to, say, retry at a given time, or attach data to the error, or update the context somehow (say, if you want to keep track in some quasi-global way of the last rate limit status). But it doesn't really let you add a field to the response for the caller to handle.
Alternately, the option use_extensions
adds a return parameter with the extensions. This was added in #184 (see the issue #183 for a bit of discussion on why it's set up this way). It will work better if you want the caller to handle the extensions.
While writing this I realize we could maybe do better on the second half by letting you make the extensions typed? Something like
# genqlient.yaml
extensions_type: path/to/mypkg.Extensions
package mypkg
type Extensions struct {
Cost struct { ... } `json:"cost"
}
and then instead of map[string]interface{}
you get *mypkg.Extensions
. Arguably we could even do that if you don't have use_extensions
, just for the benefit of a custom graphql.Client
. Not sure how important that is for your use case, but it seems reasonable to add.
from genqlient.
use_extensions
is perfect, thank you so much. I had no idea it was an option. Resolved my issues
from genqlient.
Related Issues (20)
- config option `optional` is not validated HOT 1
- Add Go 1.20 to tests
- Drop Go <1.18 HOT 3
- Global omitempty option HOT 12
- Make it easier to integration test config options
- Premarshal struct does not maintain JSON tags (omitempty) HOT 6
- Handling enums with strings that have variations of character casing HOT 2
- genqlient: command not found HOT 2
- [Meta] Document and improve support for Hasura & Dgraph schemas HOT 7
- Nullable list in optional pointer mode generates non-pointer slice HOT 2
- invalid character '<' looking for beginning of value HOT 4
- Inline fragments not working with `use_struct_references: true` and `pointer: optional` HOT 4
- codegen error: 'data' redeclared in this block HOT 1
- Split `TestGenerateWithConfig` cases
- Binding to a type in the same package as generated code produces invalid output HOT 4
- Cannot use Go keywords as variable names in mutation. HOT 1
- panic: runtime error: invalid memory address -- generate.go:403 HOT 4
- `# @genqlient(for: "Input.nonOptionalField", omitempty: false)` not working HOT 4
- Test that all snapshots are used
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from genqlient.