3 ms·
Show HN: GraphQL-go-tools, open source GraphQL Engine, written in Golang
- nerdyadventurer 5y agoDoes anyone know Go lang or Rust based alternative for Hasura, Postgraphile?
- newusertoday 5y agoi have used this in one of my project https://github.com/dosco/graphjin https://github.com/dosco/graphjin. While not directly comparable to hasura it does the job and is lightweight
- nerdyadventurer 5y agoThis is awesome, thanks for sharing. Is this stable to use in prod? I see it have not reached 1.0 yet. > While not directly comparable to hasura Why do you say so, seems comparable to Hasura?
- newusertoday 5y agoI have not used it in production. It looks good to me wrt to code however i have not audited so can't say for sure. May be you can check in github discussions if anyone is using it in production
- jensneuse 5y agoAs mentioned in another comment, based on this repo and in combination with Prisma, WunderGraph can be used as an alternative to the ones you've mentioned. It's completely written in Go (WunderGraph) and Rust (Prisma engine) and going to be open sourced soon: https://wundergraph.com/ https://wundergraph.com/
- newusertoday 5y agoComparison with other libraries(gqlgen,graph-gophers) would be good. Documentation is more focused on how it is implemented rather than how to use it. Does it solves N+1 problem? or custom code needs to be written for it like gqlgen?
- gertd 5y agoInterested to understand how does this compares and relates to https://github.com/99designs/gqlgen https://github.com/99designs/gqlgen. Especially in the area of type system, is this reflection based, materialized types?
- jensneuse 5y agogqlgen allows you to write GraphQL Servers with resolvers, etc. graphql-go-tools implements not just the GraphQL specification but also comes with a GraphQL engine that is "thunk-based". What this means is that you don't "implement" resolvers, you configure them. We then have a Query Planner, similar to a SQL database, that can make a stateless execution plan for a given GraphQL query. This plan can be cached and then executed, making it very efficient. What's possible so far is that you can combine multiple GraphQL and REST APIs into a single unified GraphQL API. It also supports Apollo Federation as upstream, including subscriptions. The whole system is very flexible and extensible so that you can implement a few interfaces and add support for e.g. gRPC or Kafka as upstream. We're using the engine in WunderGraph to make it easy to configure and use: https://wundergraph.com/ https://wundergraph.com/ What WunderGraph does is it gives you a TypeScript SDK to automatically configure the "unified graph" based on introspecting one or more DataSources, e.g. OpenAPI (REST), GraphQL, Federation and Databases like PostgreSQL, MySQL, Planetscale etc.. What problem does it solve? Using this engine, you can talk to multiple heterogenous systems as if they are one single GraphQL API, even though their sub protocols are different.