Coder Social home page Coder Social logo

Comments (5)

hlship avatar hlship commented on May 18, 2024

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.

gusbicalho avatar gusbicalho commented on May 18, 2024

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.

hlship avatar hlship commented on May 18, 2024

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.

lilactown avatar lilactown commented on May 18, 2024

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.

hlship avatar hlship commented on May 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.