graph-node icon indicating copy to clipboard operation
graph-node copied to clipboard

[Feature] Expose utility to generate "full" API schema from entities GQL schema

Open monitz87 opened this issue 2 years ago • 9 comments

Description

As it is, the only way to get the "true" GQL API schema is to deploy a subgraph and perform an introspection query. This is very painful for tooling and codegen purposes. It would be very nice to be able to generate the full schema locally from the "entities" schema.

I noticed this is relatively easy to isolate, as it is being done here: https://github.com/graphprotocol/graph-node/blob/252e9129588b0b022bcaf50bbe365287db18241b/graphql/examples/schema.rs

I'm actually in the process of creating a docker image that does exactly that. I basically cloned this repo, added a build target for that script and created a dockerfile that runs it, but it is not a very elegant solution. I'll still share it here once it's up in case someone else needs it.

I know this is more of a feature request for the CLI, but since the relevant code resides in this repo, and the CLI repo doesn't have a "Feature Request" template, I thought I'd open the issue here.

Are you aware of any blockers that must be resolved before implementing this feature? If so, which? Link to any relevant GitHub issues.

No response

Some information to help us out

  • [ ] Tick this box if you plan on implementing this feature yourself.
  • [ ] I have searched the issue tracker to make sure this issue is not a duplicate.

monitz87 avatar Jun 20 '23 22:06 monitz87

For anyone who's interested in a temporary workaround:

As I said, I created a docker image that takes the entities schema as input and outputs the full subgraph GQL API schema

Dockerhub repo: https://hub.docker.com/repository/docker/monitz87/graphprotocol-schema-generator/general Github repo (basically a fork of this one): https://github.com/monitz87/graph-node-schema-generator

monitz87 avatar Jun 21 '23 00:06 monitz87

Looks like this issue has been open for 6 months with no activity. Is it still relevant? If not, please remember to close it.

github-actions[bot] avatar Jan 09 '24 00:01 github-actions[bot]

Yup, still relevant. Just updated the image to be in sync with the current graph node master btw

monitz87 avatar Jan 11 '24 00:01 monitz87

thanks @monitz87 - @saihaj @lutter any thoughts here?

azf20 avatar Feb 02 '24 14:02 azf20

For GraphQL Codegen purposes just providing the URL should work by giving the subgraph URL.

I do like this proposal, I also need something similar in CLI where we can provide the Subgraph definition and generate a Schema graph-node will generate.

We did start exploring to create utilities which can be exposed in a new crate we publish and we can consume using NAPI in CLI. So once we do get NAPI setup working for validation in CLI we can also expose a helper in CLI for this but yeah if it is just a crate users should be able to use in Rust code as is

saihaj avatar Feb 02 '24 16:02 saihaj

For GraphQL Codegen purposes just providing the URL should work by giving the subgraph URL.

The idea is to be able to iterate and develop locally without having to actually deploy a subgraph

monitz87 avatar Feb 02 '24 18:02 monitz87

For GraphQL Codegen purposes just providing the URL should work by giving the subgraph URL.

The idea is to be able to iterate and develop locally without having to actually deploy a subgraph

👍🏼 so the latter part I am talking about building out NAPI utilities (if it works) we can expose via cli

saihaj avatar Feb 02 '24 19:02 saihaj

The code to do this would be very easy on the graph-node side. There's an example that does just that. You can run it with cargo run --example schema <subgraph schema> The big question how this should be exposed in the end. If we ever get N-API working against graph-node, doing it from graph-cli would probably be the easiest for users.

lutter avatar Feb 02 '24 22:02 lutter

checking in on feasibility of this? agree that graph-cli is probably the place from a developer experience perspective

azf20 avatar Feb 20 '24 11:02 azf20