Crate eventstore[][src]

Official Rust EventStoreDB 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::{ All, Client, EventData, ReadResult };
use futures::stream::TryStreamExt;
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::create(settings).await?;

    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)?;

    let _ = client
        .append_to_stream("language-stream", &Default::default(), evt)
        .await?;

    let result = client
        .read_stream("language-stream", &Default::default(), All)
        .await?;

    if let ReadResult::Ok(mut stream) = result {
        while let Some(event) = stream.try_next().await? {
            let event = event.get_original_event()
                    .as_json::<Foo>()?;

            // Do something productive with the result.
            println!("{:?}", event);
        }
    }

    Ok(())
}

Modules

prelude

Structs

All

Get all the stream's events.

AppendToStreamOptions

Options of the append to stream command.

Client

Represents a client to a single node. Client maintains a full duplex communication to EventStoreDB.

ClientSettings

Gathers all the settings related to a gRPC client with an EventStoreDB database. ClientSettings can only be created when parsing a connection string.

ClientSettingsParseError
ConnectToPersistentSubscription
Credentials

Holds login and password information.

DeletePersistentSubscriptionOptions
DeleteStreamOptions

Options of the delete stream command.

Endpoint
EventData

Holds data of event about to be sent to the server.

PersistentSubEvent
PersistentSubRead

Read part of a persistent subscription, isomorphic to a stream of events.

PersistentSubscriptionOptions
PersistentSubscriptionSettings

Gathers every persistent subscription property.

Position

A structure referring to a potential logical record position in the EventStoreDB transaction file.

ReadAllOptions
ReadEventResult

Represents the result of looking up a specific event number from a stream.

ReadStreamOptions
RecordedEvent

Represents a previously written event.

ResolvedEvent

A structure representing a single event or an resolved link event.

Single

Get only one stream's event.

StreamAcl

Represents an access control list for a stream.

StreamMetadata

Represents stream metadata with strongly types properties for system values and a dictionary-like interface for custom values.

StreamMetadataBuilder

Used to facilitate the creation of a stream's metadata.

Streaming
SubscribeToAllOptions
SubscribeToStreamOptions
SubscriptionFilter
SubscriptionRead
SubscriptionWrite
VersionedMetadata

Represents a stream metadata.

WriteResult

Returned after writing to a stream.

WrongExpectedVersion

Enums

CurrentRevision

Actual revision of a stream.

Error

EventStoreDB command error.

ExpectedRevision

Constants used for expected version control. The use of expected version can be a bit tricky especially when discussing assurances given by the GetEventStore server.

GrpcConnectionError

EventStoreDB command error.

NakAction

Gathers every possible Nak actions.

NodePreference

Indicates which order of preferred nodes for connecting to.

PersistActionError

Enumerates all persistent action exceptions.

PersistActionResult

Represents the different scenarios that could happen when performing a persistent subscription.

ReadEventStatus

Enumeration detailing the possible outcomes of reading a stream.

ReadResult
ReadStreamError

Represents the errors that can arise when reading a stream.

ReadStreamStatus

Represents the result of reading a stream.

Retry

Represents a reconnection strategy when a connection has dropped or is about to be created.

StreamMetadataResult

Represents stream metadata as a series of properties for system data and user-defined metadata.

StreamPosition
SubEvent

Events related to a subscription.

SystemConsumerStrategy

System supported consumer strategies for use with persistent subscriptions.

Traits

ToCount
ToEvents

Type Definitions

Result