I wanted to officially share the project I've been putting all my spare time into for a bit over a month. It's a tool to take Calcite data source schemas, and auto-generate a queryable GraphQL API from them.
- https://github.com/GavinRay97/GraphQLCalcite (If you want to skip to "What does this do exactly?" illustrated visually, jump to the section: "Walkthrough of Current Progress") For some brief background -- my dayjob is at an open-source tool that does this same thing (GraphQL API generation for data sources). - https://github.com/hasura/graphql-engine - https://hasura.io/ I'm very familiar with GraphQL, and Calcite seemed brilliant and interesting, so I thought it could be a fun project to try to re-write the core of Hasura's functionality with Calcite. My hunch is that there's potentially a significant performance increase to be had by using Calcite for the query planning and optimization. Particularly when querying data from multiple data sources + joining across them is involved. The "Roadmap" section lists a checklist of features currently implemented, and what's left to implement. I am not certain if all of it is possible. I am not certain Calcite will be faster (that would be a bummer). Right now it only implements queries, but I want/need to implement Mutations (insert/update/delete) and I have to figure out whether Calcite is capable of handling Subscriptions (live/streaming queries). I also have yet to figure out how to handle queries with JOIN's in them. But so far, I've had a lot of fun learning and building this. If anyone is interested in following along, I plan to build in public =) Also: Calcite is a large, complicated API. If anyone sees something stupid I'm doing, or has advice, I would be grateful for it. =================================================================== As a closing remark, I wanted to take a moment to thank some folks: - Julian, for answering a bunch of dumb questions and the BOSS workshop - Stamatis, for the Youtube videos he has on Calcite tutorials - Vladimir Ozerov, for the QuerifyLabs blogposts about Calcite, and the resources on Notion - Gerard Nico, for https://datacadamia.com/db/calcite/getting_started and https://github.com/gerardnico/calcite - Jacques, for the conversation he had with me
