florinpatrascu / bolt_sips

Neo4j driver for Elixir
Apache License 2.0
256 stars 49 forks source link

Support for bolt+routing #28

Closed mkrogemann closed 5 years ago

mkrogemann commented 7 years ago

Not reporting an issue here but asking if there are plans to build in support for the routing extension. I am currently at graphconnect and learning about how this is implemented in other drivers. I am happy to share what I learn and to support implementation. Curious if there is already work in progress on this?

florinpatrascu commented 7 years ago

Graphconnect, eh?! The best place to be these days, and now I'm jealous:)

I was looking into the routing support but didn't plan yet to work on it as there isn't much feedback I get for this driver lately. The latter is maybe because the users are just happy with what this driver is, or b/c they are not yet deep into using Neo4j with Elixir, not as deep as requiring routing? idk - I for one, am :) Or maybe b/c they lost their interest in this solution ... hopefully not.

Unfortunately my schedule is swamped during this period, hence the relative slow pace in updating the driver, but I would definitely be interested in hearing more about the info you may share, about routing, I do really appreciate your feedback, thank you!

If you also have any PRs, that too would help tremendously!

dsantosmerino commented 6 years ago

Hey @florinpatrascu!

Searching info about Bolt+Routing I have found your PR at Boltex (https://github.com/mschae/boltex/pull/20). I can imagine that it is a big task, but I'm really interested in it, and I'd like to know more about the status, in order to determinate if we need to work on our own implementation or just help you, if you need it.

Thanks for your good work! 👏

florinpatrascu commented 6 years ago

Hey @dsantosmerino!

Thank you for your kind words. I started indeed working on Bolt+Routing a while ago, hence the need to have the server version info. At that time the db_connection was still in development, and had to re-think the integration design, from my end, based on how db_connection evolved, and blasted away a couple of iterations as a result of that. Which was all good, because db_connection has today every ingredient needed to support the routing implementation, hence much less code needed from my side :) I believe I have a good idea now, about the implementation, but I am not sure how quickly I can commit to it, as I have a lot of projects on-going at my new full-time job and being swamped as a result of that. If your team have the resources and the will to contribute to this project, then please feel free to send a PR, or fork the project if you'd rather prefer the latter; whatever is best for the community. I personally still want to finish my Bolt+Routing implementation and I'll do that even if by then there will be other alternatives available :) but can't commit to an exact date unfortunately, as it is mostly weekends and nights type of work. And kind contributions from other developers too, of course :)

Thanks again, for your interest in this work!

florinpatrascu commented 6 years ago

.. spent a fair amount of time with db_connection, from master, and will try to move forward with my routing implementation; but no promises ;)

florinpatrascu commented 6 years ago

taking a shot at this ;)

dsantosmerino commented 6 years ago

Hey @florinpatrascu, we've developed a 'draft' to make it work. It's still a WIP, we need to add some docs and more details, but it's working as expected. You can find the source code at Badiapp/bolt-routing-driver. Of course, your feedback is more than welcome!

We'd like to see your implementation, pretty sure that it's better that our one! We've really enjoyed using your work on this hex.

florinpatrascu commented 6 years ago

Hi @dsantosmerino - that's cool, you guys moved forward, kudos! On my side, I am spinning around the design and prototyping, as I want to be as integrated as possible with the db_connection (the version from master), and aiming to use it properly; on top of these, there is a new Bolt driver version coming from the nice fells at Neo4j (v2 - adding support for new datatypes). And to add more excitement, Neo4j is also working on a very fast driver: seabolt, which will probably dictate a fair amount of refactoring in bolt_sip. In fact I was playing with it for the last few weeks (weekends, to be more exact), and it is indeed very fast, promising a lot, but definitely not yet in a stable version. Anyway, I'll try to find the time to navigate through all these and publish something. Regardless, you guys are doing a great job, and thank you for using our driver! - ❤️

florinpatrascu commented 5 years ago

I had to trash a lot of designs, in my attempts to support routing in the driver itself and I wasn't happy with any of them. Plus, I am seriously thinking to change the license for this driver ...

And now with the latest DBConnection, I will have to rethink it again. Meanwhile, if your project: bolt-routing-driver will be maintained, then I'll recommend it to every interested user coming my way. Thank you @dsantosmerino!