The eventstore package

[ Tags: bsd3, database, library ] [ Propose Tags ]

EventStore TCP Client

[Skip to Readme]


Versions,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, (info)
Change log CHANGELOG.markdown
Dependencies aeson (>=0.8 && <1.3), array, base (>=4.7 && <5), bifunctors, bytestring, cereal (>=0.4 && <0.6), clock, connection (==0.2.*), containers (==0.5.*), dns, dotnet-timespan, ekg-core, exceptions, fast-logger, hashable, http-client (==0.5.*), interpolate, lifted-async, lifted-base, machines (>=0.6), monad-control, monad-logger (>=0.3.20), mono-traversable (==1.*), mtl, protobuf (>= && <0.3), random (==1.*), safe-exceptions, semigroups (>=0.5), stm, stm-chans, text, text-format, time (>=1.4 && <1.9), transformers-base, unordered-containers, uuid (==1.3.*) [details]
License BSD3
Copyright Yorick Laupa
Author Yorick Laupa
Category Database
Home page
Bug tracker
Source repository head: git clone
Uploaded Sat Aug 12 22:23:49 UTC 2017 by YorickLaupa
Distributions LTSHaskell:, NixOS:, Stackage:
Downloads 4431 total (63 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-08-12 [all 1 reports]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees

Readme for eventstore-

[back to package description]

EventStore Haskell TCP client

Join the chat at <a href=""></a> Build Status

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


  • 64bits system
  • GHC >= 7.8.3
  • Cabal >= 1.18
  • EventStore >= 3.0.0 (>= 3.1.0 if you want competing consumers)


$ cabal update
$ cabal install eventstore
  • From source
$ git clone
$ cd eventstore
$ cabal install --only-dependencies
$ cabal configure
$ cabal install

How to test

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

$ cabal install --only-dependencies --enable-tests
$ cabal configure --enable-tests
$ 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 "" 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 "languages" anyVersion evt

    -- 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


That library was tested on Linux and OSX Yosemite.

Contributions and bug reports are welcome!

BSD3 License

-Yorick Laupa