47 releases (8 stable)
3.0.0 | Feb 29, 2024 |
---|---|
2.3.0 | Oct 17, 2023 |
2.2.0 | Feb 13, 2023 |
2.1.2-alpha |
|
0.1.0 | Jun 20, 2018 |
#165 in Database interfaces
1,602 downloads per month
Used in 3 crates
480KB
11K
SLoC
EventStoreDB Rust Client
Official Rust EventStoreDB rust gRPC gRPC Client.
EventStoreDB is an open-source database built from the ground up for Event Sourcing, with Complex Event Processing in Javascript.
EventStoreDB Server Compatibility
This client is compatible with version 20.6.1
upwards and works on Linux, MacOS and Windows.
Server setup instructions can be found here EventStoreDB Docs, follow the docker setup for the simplest configuration.
Example
use eventstore::{ Client, EventData };
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug)]
struct Foo {
is_rust_a_nice_language: bool,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Creates a client settings for a single node configuration.
let settings = "esdb://admin:changeit@localhost:2113".parse()?;
let client = Client::new(settings)?;
let payload = Foo {
is_rust_a_nice_language: true,
};
// It is not mandatory to use JSON as a data format however EventStoreDB
// provides great additional value if you do so.
let evt = EventData::json("language-poll", &payload)?;
client
.append_to_stream("language-stream", &Default::default(), evt)
.await?;
let mut stream = client
.read_stream("language-stream", &Default::default())
.await?;
while let Some(event) = stream.next().await? {
let event = event.get_original_event()
.as_json::<Foo>()?;
// Do something productive with the result.
println!("{:?}", event);
}
Ok(())
}
Support
Information on support can be found here: EventStoreDB Support
Documentation
Documentation for EventStoreDB can be found here: EventStoreDB Docs
Bear in mind that this client is not yet properly documented. We are working hard on a new version of the documentation.
Community
We have a community discussion space at EventStoreDB Discuss.
Dependencies
~21–35MB
~649K SLoC