Fork me on GitHub

What does the source-stream method do?


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.


If we have it (source-stream (sum a b)) then we should run the subscription as {subscription (a:1, b:2) {ask anything to return}}


Yes, something like that. But it's an subscription, so you need something in place that when whatever happens that should result in a new message, you call the source-stream function again.


Does lacinia support Long type in some way? According to 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.

thumbsup_all 2