All Projects → YoEight → Eventstore

YoEight / Eventstore

Licence: bsd-3-clause
EventStore Haskell TCP Client

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Eventstore

workflow
Functional CQRS Eventsourcing Engine
Stars: ✭ 22 (-71.43%)
Mutual labels:  eventstore, eventsourcing
rxeventstore
RxEventStore is a module for persisting and querying data using the Event Sourcing pattern and RxJs.
Stars: ✭ 26 (-66.23%)
Mutual labels:  eventstore, eventsourcing
EventStore-Client-NodeJS
A NodeJS client for Event Store
Stars: ✭ 139 (+80.52%)
Mutual labels:  eventstore, eventsourcing
Todomvc Ddd Cqrs Eventsourcing
Implementation of basic Todo app via tastejs/todomvc in C#/Typescript with eventsourcing, cqrs, and domain driven design
Stars: ✭ 134 (+74.03%)
Mutual labels:  eventsourcing, eventstore
Aggregates.net
.NET event sourced domain driven design model via NServiceBus and GetEventStore
Stars: ✭ 261 (+238.96%)
Mutual labels:  eventsourcing, eventstore
Eventflow
Async/await first CQRS+ES and DDD framework for .NET
Stars: ✭ 1,932 (+2409.09%)
Mutual labels:  eventsourcing, eventstore
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+206.49%)
Mutual labels:  eventstore, eventsourcing
Kitsvc
⚙ 一個基於 Golang、Consul、Prometheus、EventStore、Gin、Gorm、NSQ 的微服務起始結構。
Stars: ✭ 101 (+31.17%)
Mutual labels:  eventsourcing, eventstore
factcast
This project is archived. A friendly fork can be found at https://github.com/factcast/factcast/
Stars: ✭ 14 (-81.82%)
Mutual labels:  eventstore, eventsourcing
les
Go directly from an event storming to a working API: Event Markdown / Markup validation & NodeJS CQRS/ES application builder.
Stars: ✭ 48 (-37.66%)
Mutual labels:  eventstore, eventsourcing
Eventflow.example
DDD+CQRS+Event-sourcing examples using EventFlow following CQRS-ES architecture. It is configured with RabbitMQ, MongoDB(Snapshot store), PostgreSQL(Read store), EventStore(GES). It's targeted to .Net Core 2.2 and include docker compose file.
Stars: ✭ 131 (+70.13%)
Mutual labels:  eventsourcing, eventstore
Eventstore
The stream database optimised for event sourcing
Stars: ✭ 4,395 (+5607.79%)
Mutual labels:  eventsourcing, eventstore
Eshoponcontainersddd
Fork of dotnet-architecture/eShopOnContainers in full DDD/CQRS design using my own patterns
Stars: ✭ 126 (+63.64%)
Mutual labels:  eventsourcing, eventstore
Cosmostore
F# Event store for Azure Cosmos DB, Table Storage, Postgres, LiteDB & ServiceStack
Stars: ✭ 154 (+100%)
Mutual labels:  eventsourcing, eventstore
Bifrost
This is the stable release of Dolittle till its out of alpha->beta stages
Stars: ✭ 111 (+44.16%)
Mutual labels:  eventsourcing, eventstore
nestjs-boilerplate-microservice
Nestjs Microservice boilerplate: apply DDD, CQRS, and Event Sourcing within an event driven architecture
Stars: ✭ 270 (+250.65%)
Mutual labels:  eventstore, eventsourcing
Extreme
Elixir Adapter for EventStore
Stars: ✭ 110 (+42.86%)
Mutual labels:  eventstore, tcp-client
Event Store Client
PHP 7.4 Event Store Client Implementation
Stars: ✭ 93 (+20.78%)
Mutual labels:  eventsourcing, eventstore
eventsource-api
Provides an eventsourcing high level API.
Stars: ✭ 12 (-84.42%)
Mutual labels:  eventstore, eventsourcing
Sequent
CQRS & event sourcing framework for Ruby
Stars: ✭ 400 (+419.48%)
Mutual labels:  eventsourcing, eventstore

EventStore Haskell TCP client

Talk and exchange ideas in our dedicated Discord Server

That driver supports 100% of EventStore features ! More information about the GetEventStore database can be found there: https://eventstore.com/

Requirements

  • 64bits system
  • GHC >= 8.0.3
  • Cabal >= 1.18
  • EventStore >= 4 (Doesn't support EventStore 2020 Preview yet, previously named version 6).

Note: If you use this client version >= to 1.1, it will only supports EventStore >= 4.0.0.

Install

$ cabal update
$ cabal install eventstore
  • From source
$ git clone https://github.com/YoEight/eventstore.git
$ cd eventstore
$ cabal install

How to test

Tests are available. Those assume a server is running on 127.0.0.1 and 1113 port.

$ cabal test

How to use

{-# LANGUAGE OverloadedStrings #-} -- That library uses `Text` pervasively. This pragma permits to use
                                   -- String literal when a Text is needed.
module Main where

import Control.Concurrent.Async (wait)
import Data.Aeson
-- It requires to have `aeson` package installed. Note that EventStore doesn't constraint you to JSON
-- format but putting common use aside, by doing so you'll be able to use some interesting EventStore
-- features like its Complex Event Processing (CEP) capabality.

import Database.EventStore
-- Note that imports 'NonEmpty' data constructor and 'nonEmpty' function from
-- 'Data.List.NonEmpty'.

main :: IO ()
main = do
    -- A common pattern with an EventStore connection is to create a single instance only and pass it
    -- wherever you need it (it's threadsafe). It's very important to not consider an EventStore connection like
    -- its regular SQL counterpart. An EventStore connection will try its best to reconnect
    -- automatically to the server if the connection dropped. Of course that behavior can be tuned
    -- through some settings.
    conn <- connect defaultSettings (Static "127.0.0.1" 1113)
    let js  = object ["isHaskellTheBest" .= True] -- (.=) comes from Data.Aeson module.
        evt = createEvent "programming" Nothing (withJson js)

    -- Appends an event to a stream named `languages`.
    as <- sendEvent conn (StreamName "languages") anyVersion evt Nothing

    -- EventStore interactions are fundamentally asynchronous. Nothing requires you to wait
    -- for the completion of an operation, but it's good to know if something went wrong.
    _ <- wait as

    -- Again, if you decide to `shutdown` an EventStore connection, it means your application is
    -- about to terminate.
    shutdown conn

    -- Make sure the EventStore connection completes every ongoing operation. For instance, if
    -- at the moment we call `shutdown` and some operations (or subscriptions) were still pending,
    -- the connection aborted all of them.
    waitTillClosed conn

Notes

That library was tested on Linux and OSX.

Contributions and bug reports are welcome!

BSD3 License

-Yorick Laupa

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].