Giter Club home page Giter Club logo

Comments (5)

ecwyne avatar ecwyne commented on May 18, 2024

This is very close to the API I would suggest as well, with one exception. We discussed using peerDependencies to declare what a data source "requires".

If we add an additional "Comments" schema to your above example (where a user can see all of their comments)

const dataSource = {
  namespace: 'User',
  schema: /* ... */,
  resolvers: /* ... */,
  mocks: /* ... */,
  model: /* ... */,
  stitching: {
    requires: ['Chirp', 'Comment'],
    linkTypeDefs: `
        extend type User {
          chirps: [Chirp]
          comments: [Comment]
        }
    `,
    resolvers: mergeInfo => ({
      User: {
        comments: {
          fragment: `fragment UserFragment on User { id }`,
          resolve(parent, args, context, info) {
            const authorId = parent.id;
            return mergeInfo.delegate(
              'query',
              'commentssByAuthorId',
              {
                authorId,
              },
              context,
              info,
            );
          },
        },
        chirps: {
          fragment: `fragment UserFragment on User { id }`,
          resolve(parent, args, context, info) {
            const authorId = parent.id;
            return mergeInfo.delegate(
              'query',
              'chirpsByAuthorId',
              {
                authorId,
              },
              context,
              info,
            );
          },
        },
      },
    },
  }
};

What should I do if Chirps is present but not Comments?

peerDependencies would make these requirements all-or-nothing and provide SemVer assurances out of the box.

from gramps--legacy.

jlengstorf avatar jlengstorf commented on May 18, 2024

Oh, shit, I totally forgot about the peerDependencies conversation.

Yes, that's better. Let's do that. 😄

from gramps--legacy.

ecwyne avatar ecwyne commented on May 18, 2024

@jlengstorf I'm going to take a crack at this today. Do you prefer:

const dataSource = {
  namespace: 'User',
  schema: /* ... */,
  resolvers: /* ... */,
  mocks: /* ... */,
  model: /* ... */,
  stitching: {
    linkTypeDefs: /* ... */,
    resolvers: mergeInfo => /* ... */,
  },
};

or

const dataSource = {
  namespace: 'User',
  schema: /* ... */,
  resolvers: /* ... */,
  mocks: /* ... */,
  model: /* ... */,
  linkTypeDefs: /* ... */,
  stitchResolvers: mergeInfo => /* ... */,
};

from gramps--legacy.

jlengstorf avatar jlengstorf commented on May 18, 2024

Awesome. I think I prefer the first option. It seems clearer to me.

from gramps--legacy.

jlengstorf avatar jlengstorf commented on May 18, 2024

Closed by #12

from gramps--legacy.

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.