EventStore / EventStore-Client-Dotnet

Dotnet Client SDK for the Event Store gRPC Client API written in C#
Other
143 stars 37 forks source link

connection to F# #214

Open RauleHernandeza opened 2 years ago

RauleHernandeza commented 2 years ago

Is your feature request related to a problem? I can't find a way to make a connection between F# and event store, however I have heard that other people have done it and I would like to know how to do it.

Describe the solution you'd like I would like you to add the way to connect to the documentation if there is already a way to do it.

Describe alternatives you've considered I would like to know if this connection is possible or not, and if it is possible, please tell me how to do it.

Additional context I appreciate any information you can give me

oskardudycz commented 2 years ago

@RauleHernandeza, I moved this to .NET gRPC client repository, as it's not an issue with the database, but more client snippets/samples. Indeed we don't have samples/snippets for F#, I hope we'll have more of them soon, but it's hard to promise when.

You can check https://github.com/jet/equinox/ maintained by @bartelink. That's an F# framework that has EventStoreDB support. Currently, it's using a TCP client, but gRPC client support is planned AFAIK. Tho, by looking at TCP client usage, you can find patterns on how to use gRPC one. I'm not aware of any blocking issues using EventStoreDB with F#.

bartelink commented 2 years ago

Equinox has full gRPC support with the test suite running in full against a Docker cluster in https://github.com/jet/equinox/pull/196 - I have not merged it as I am focused on https://github.com/jet/equinox/pull/321 - adding DynamoDB support. You can look at the source in the first PR; if you would derive any benefit from it, I can merge it and release a NuGet (Equinox V4 will enter beta this month but I will be offline for most of June). The connection logic is pretty spartan as it is, but e.g. there's the full logic for reading and writing, and querying, i.e. AsyncSeq stuff.

Also worth mentioning is that in https://github.com/jet/propulsion/pull/139 there's a $all projector/consumer/reactor loop to go with the existing TCP based one (I'll release that shortly after the Equinox release).

TL;DR stuff badged EventStoreDb in Equinox and Propulsion is the gRPC stuff, and the older stuff is using the TCP interface (I'll be removing that in V5)

If you want to chat about anything wrt this, feel free to drop into the #equinox room on the DDD-CQRS-ES Slack.