axelson

axelson

Scenic Core Team

Does anyone know if it possible to do GraphQL Schema Stitching with Absinthe?

The Apollo article about schema stitching is very exciting:

https://dev-blog.apollodata.com/graphql-schema-stitching-8af23354ac37

But rather than add a nodejs dependency to our application it would be great to do the stitching directly in Elixir (probably with Absinthe), has anyone played with GraphQL schema stitching?

Showing Posts 1 to 10

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

Not yet!

This is the primary feature aimed at with Absinthe 1.5. I can’t give you a timeline yet, but we believe we have a high level approach that will work, and it’s largely a matter of carving out the time to make it happen.

11
Post #1
axelson

axelson OP

Scenic Core Team

Cool, I’m glad that it’s on the radar. Is the plan for 1.5 to have “full” stitching (i.e. links as described by that article)? Or will 1.5 just have basic stitching. For the initial version of our API we only really need basic stitching, so it would be nice to play with that before “full” stitching is ready.

axelson

axelson OP

Scenic Core Team

For reference here is the matching issue with discussion in the Absinthe project:
https://github.com/absinthe-graphql/absinthe/issues/387

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

I think the plan is to do full linking, there isn’t gonna be much of an incremental change there I think. The largest amount of work here involves refactoring the internal mechanics of schema building, and adding GraphQL client capabilities. Once those capabilities are in place that full feature set should fall out pretty easily. Or at least that’s the plan :wink:

GregMefford

GregMefford

Is the implication here that there will also be GraphQL client capability in the API in Absinthe 1.5, or will it only be used internally to support the schema-stitching?

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

@GregMefford this is a good question. The answer is honestly TBD at this point. I can say that in order to make sure that Absinthe 1.5 doesn’t take forever to come out, we’ll likely target the minimum functionality we need to do schema stitching. However if this functionality can be exposed via publicly documented functions we will absolutely do so.

GregMefford

GregMefford

My vote would definitely be to focus on the schema-stitching feature! :thumbsup:

I was going to say “it would be nice to have GQL client support if it’s easy”, but on second though, we all know that extending the API is never easy because it’s more surface area that you need to support. Maybe save it for 1.6. :sweat_smile:

benwilson512

benwilson512

Author of Craft GraphQL APIs in Elixir with Absinthe

Yeah exactly. I fully expect to have some internal functions that may be useful to folks, but we’ll likely keep them undocumented so that when we do 1.6 or whatever we can think through the client story in more specific detail. Schema stitching is ambitious enough without also trying to nail down a client API.

axelson

axelson OP

Scenic Core Team

Is there any recommended approach for super basic schema stitching before 1.5 is out? I’m thinking something along the lines of creating a controller (although code could live somewhere else) that just takes a graphql query, splits it based on top-level keys and sends it to separate GraphQL backends and then merges them back together.

This is the basic foundation of what we need so that we don’t need to expose multiple GraqhQL endpoints to our end-clients. These are all internal GraphQL api’s that we are in the process of building, so it shouldn’t be too difficult to keep them “compatible” in terms of authentication and other concerns.

jstlroot

jstlroot

Hi @benwilson512 and thank you for everything you’re doing!

I was wondering if schema stitching was still on Absinthe’s roadmap? I’m currently building a small distributed app and this would be a very useful way to manage collaboration of microservices behind GraphQL API.

Cheers! :beers:

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews