As you are using it with Kafka, https://github.com/gklijs/bkes-demo/blob/main/graphql-endpoint/src/nl/openweb/graphql_endpoint/transaction_service.clj might help as example.
Does lacinia
support Long
type in some way? According to https://graphql.org/learn/schema/ it is not part of the standard but individual implementations can support “custom” types. The reason I ask is that a portion of my backend is using Datomic and Datomic ids are Long
which is causing problems for lacinia
. Currently, I’m converting them to strings but would prefer not to.
You can implement a Long as a custom scalar, which works fine if you are using EDN as your wire format, but may be problematic if using JSON.
Internally, Lacinia uses core.async to model the asynchronous behavior associated with streams.
However, it doesn't expose that directly, instead it provides a function, a source stream, that your code may repeatedly invoke.
That function puts values into the necessary core.async channels, and ultimately, ensures that the data is pushed down to the client.