Closed deusaquilus closed 5 years ago
I have a quill-monix implementation as well, slightly different from oleg's but pretty much the same functionality. I also have a module integrating refined with quill. Please let me know if I can help with this regard.
Also, since we're talking about functional streams, it would be nice to have errors in monads, instead of throwing exceptions.
@cemelo that sounds promising! is it on github?
@cemelo Yeah, it would be great to have a look. Would you like to create a PR? I'm going to be looking into this next week hopefully.
They're both still in our codebase, but I can move them into a PR so you guys can take a look. I'll try get that done by the end of the week.
@deusaquilus @fwbrasil I added a PR (#1261) that contains some code I pulled from our codebase, still rough around the edges but functional.
I also created a repository (quill-contrib) with additional modules that I don't think would be a good fit for the core repo, but might be a basis for an extra
kind of repo. Of course, whether that's the case is up to you. 😊 Fyi, there's already a enumeratum-quill library, but that treats enums as strings on the database, while mine uses actual enums (at least with PostgreSQL).
Please, take a look and let me know what needs to be improved and I'll try to work on it.
In order to call it a true one-stop-shop database interaction framework, Quill needs to implement a reactive/streaming API for all it's submodules. Originally in #204, this was concieved as a Monix-based api but then in #985 it was concluded that monix must be moved out of primary Quill modules. I propose that we introduce a monix-based streaming context module called
quill-streaming
that is implemented byquill-jdbc-streaming
,quill-cassandra-streaming
etc...Alternatively, if we implement our own org.reactivestreams.Publisher we get integrations into Monix and many other systems for free.
At this point, I propose that we move streaming out of
quill-cassandra
intoquill-cassandra-streaming
and create:quill-jdbc-streaming
- A streaming library for JDBC-driven connections. This would basically put Quill on par with Slick in terms of database functionality. While not as fast or robust as NDBC, there are JDBC drivers for dozens (maybe hundreds) of databases and being able to stream these would make Quill much, much more appealing in every use-case from MemSQL, to Impala, to Redshift, to DB2.Some other potential candidates are:
quill-orientdb-streaming
- It would be really cool to have a streamiing API here too.quill-finagle-*-streaming
- Since Finagle supports streaming a first class entity having streaming context in these modules would also be very useful.Also, it should be noted that @oleg-py has created a library called quill-monix which incorporates monix into quill-jdbc. This seems like an ideal place on top of which to integrate monix observeables!