The eventstore package

[Tags:bsd3, library, test]

EventStore TCP Client http://geteventstore.com


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.1, 0.1.1.0, 0.1.2.0, 0.2.0.0, 0.2.0.1, 0.3.0.0, 0.3.1.0, 0.4.0.0, 0.5.0.0, 0.5.0.1, 0.6.0.0, 0.6.0.1, 0.7.0.0, 0.7.0.1, 0.7.1.0, 0.7.2.0, 0.7.2.1, 0.8.0.0, 0.9.0.0, 0.9.1.0, 0.9.1.1, 0.9.1.2, 0.9.1.3, 0.10.0.0, 0.10.0.1, 0.10.0.2, 0.11.0.0, 0.12.0.0, 0.13.0.0, 0.13.0.1, 0.13.1.0, 0.13.1.1, 0.13.1.2, 0.13.1.3, 0.13.1.4, 0.13.1.5, 0.13.1.6, 0.13.1.7, 0.14.0.0, 0.14.0.1, 0.14.0.2 (info)
Change log CHANGELOG.markdown
Dependencies aeson (>=0.8 && <1.3), array, base (>=4.7 && <5), cereal (>=0.4 && <0.6), classy-prelude (==1.*), connection (==0.2.*), containers (==0.5.*), dns, dotnet-timespan, http-client (==0.5.*), mtl, protobuf (>=0.2.1.1 && <0.3), random (==1.*), semigroups (>=0.5), stm, time (>=1.4 && <1.7), unordered-containers, uuid (==1.3.*) [details]
License BSD3
Author Yorick Laupa
Maintainer yo.eight@gmail.com
Category Database
Home page http://github.com/YoEight/eventstore
Bug tracker http://github.com/YoEight/eventstore/issues
Source repository head: git clone git://github.com/YoEight/eventstore.git
Uploaded Thu Apr 27 19:38:11 UTC 2017 by YorickLaupa
Distributions LTSHaskell:0.14.0.1, NixOS:0.14.0.1, Stackage:0.14.0.2
Downloads 3717 total (287 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Last success reported on 2017-04-27 [all 1 reports]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for eventstore

Readme for eventstore-0.14.0.2

EventStore Haskell TCP client

Join the chat at <a href="https://gitter.im/YoEight/eventstore">https://gitter.im/YoEight/eventstore</a> Build Status

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

Requirements

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

Install

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

How to test

Tests are available. Those assume a server is running on 127.0.0.1 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 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 import also re-exports 'waitAsync'
-- function for instance. There are also '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  = "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.
    _ <- waitAsync 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 Yosemite.

Contributions and bug reports are welcome!

BSD3 License

-Yorick Laupa