Comments (5)
Tagging should be done last. I'm thinking that we should perform a mixed operation, only resorting to the new tagged wrapper if the object does not support metadata. Using metadata, which works in nearly all situations, it doesn't matter when you tag.
from lacinia.
Hm, my use case is: I have generic adapters which I want to run on all resolvers (camel-casing keys, changing enum to uppercase strings, etc). They can't know what tag to use unless the resolver somehow returns that along with the result.
If they can't transform a TaggedValue, I'll have to use an intermediate representation which has a tag I can use directly, and transform that to a lacinia/TaggedValue on the last step of the decorator. But that looks like just remaking TaggedValue.
from lacinia.
I agree; the current solution in 0.17.0 caters too much to the edge case. I have similar code to yours, where I put metadata on the map early, and then tag it last. That's too complicated.
from lacinia.
Is there even a way to do nested resolvers without metadata + later tagging? See here: https://github.com/Lokeh/graphql-demo/blob/master/src/graphql_demo/resolvers.clj
In order to even get it to resolve:
{
human(id: "1000") {
friends {
name
}
}
Involved adding a :type
field and then processing them later to tag them. Seems really clunky.
from lacinia.
The type of friends
is character. Lacinia needs a way to determine whether each friend in the list is a human
or a droid
, as the resolver for each (even for a common field such as name
) could be different.
Remember: interfaces don't define resolvers, only objects do.
Without inheritance, there needs to be another way.
One approach may be #66 .
from lacinia.
Related Issues (20)
- "Resolver specified in schema not provided" could be clearer HOT 2
- Published version 1.1 requires missing namespace HOT 1
- In lacinia 1.1, the trace namespace code (dev only) has a dependency on io.aviso/pretty, which is not declared in deps.edn HOT 2
- icu4j vulnerability HOT 1
- Swallowed unhandled exceptions because of misusage of clojure.core/future HOT 10
- Scalar type which returns vector HOT 4
- ::lacinia/null returned in unions instead of null HOT 1
- Apollo Federation Compatibility HOT 1
- Includes variable-definitions in parsed query HOT 4
- Question: Is there a way to return JSON without a corresponding EDN definition? HOT 3
- Use of executor/selection in streamer functions HOT 1
- Document example of a raw JSON scalar
- cryptic errors when input is the wrong type
- Passing in variables wrapped in an array comes in as a double array HOT 5
- Support @defer and @stream directives
- Convert the keys of arguments and variables to kebab-case HOT 1
- Subscriptions may fail to stream data to the client
- Unbalanced braces in queries not causing parse-query to fail
- Tracing "validation" fields are always null
- Question: Query complexity and depth HOT 2
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 lacinia.