packages feed

eventful-postgresql 0.1.3 → 0.2.0

raw patch · 4 files changed

+19/−63 lines, 4 filesdep −hlintPVP ok

version bump matches the API change (PVP)

Dependencies removed: hlint

API changes (from Hackage documentation)

- Eventful.Store.Postgresql: postgresqlEventStore :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> EventStore serialized (SqlPersistT m)
+ Eventful.Store.Postgresql: postgresqlEventStoreWriter :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> EventStoreWriter (SqlPersistT m) serialized

Files

eventful-postgresql.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           eventful-postgresql-version:        0.1.3+version:        0.2.0 synopsis:       Postgres implementations for eventful description:    Postgres implementations for eventful category:       Database,Eventsourcing,PostgreSQL@@ -63,27 +63,5 @@     , persistent-postgresql   other-modules:       Eventful.Store.PostgresqlSpec-      HLint       Eventful.Store.Postgresql-  default-language: Haskell2010--test-suite style-  type: exitcode-stdio-1.0-  main-is: HLint.hs-  hs-source-dirs:-      tests-  ghc-options: -Wall-  build-depends:-      base >= 4.9 && < 5-    , eventful-core-    , eventful-sql-common-    , aeson-    , bytestring-    , mtl-    , persistent-    , text-    , hlint-  other-modules:-      Eventful.Store.PostgresqlSpec-      Spec   default-language: Haskell2010
src/Eventful/Store/Postgresql.hs view
@@ -1,11 +1,10 @@ {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-}  -- | Defines an Postgresql event store.  module Eventful.Store.Postgresql-  ( postgresqlEventStore+  ( postgresqlEventStoreWriter   , initializePostgresqlEventStore   , module Eventful.Store.Class   , module Eventful.Store.Sql@@ -22,17 +21,14 @@  -- | An 'EventStore' that uses a PostgreSQL database as a backend. Use -- 'SqlEventStoreConfig' to configure this event store.-postgresqlEventStore+postgresqlEventStoreWriter   :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend)   => SqlEventStoreConfig entity serialized-  -> EventStore serialized (SqlPersistT m)-postgresqlEventStore config =-  let+  -> EventStoreWriter (SqlPersistT m) serialized+postgresqlEventStoreWriter config = EventStoreWriter $ transactionalExpectedWriteHelper getLatestVersion storeEvents'+  where     getLatestVersion = sqlMaxEventVersion config maxPostgresVersionSql-    getEvents = sqlGetAggregateEvents config     storeEvents' = sqlStoreEvents config (Just tableLockFunc) maxPostgresVersionSql-    storeEvents = transactionalExpectedWriteHelper getLatestVersion storeEvents'-  in EventStore{..}  maxPostgresVersionSql :: DBName -> DBName -> DBName -> Text maxPostgresVersionSql (DBName tableName) (DBName uuidFieldName) (DBName versionFieldName) =
tests/Eventful/Store/PostgresqlSpec.hs view
@@ -15,20 +15,20 @@ spec = do   describe "Postgres event store" $ do     eventStoreSpec postgresStoreRunner-    sequencedEventStoreSpec postgresStoreGlobalRunner+    globalStreamEventStoreSpec postgresStoreGlobalRunner -makeStore :: (MonadIO m) => m (EventStore CounterEvent (SqlPersistT m), ConnectionPool)+makeStore :: (MonadIO m) => m (EventStoreWriter (SqlPersistT m) CounterEvent, VersionedEventStoreReader (SqlPersistT m) CounterEvent, ConnectionPool) makeStore = do   -- TODO: Obviously this is hard-coded, make this use environment variables or   -- something in the future.   let     connString = "host=localhost port=5432 user=postgres dbname=eventful_test password=password"-    store = postgresqlEventStore defaultSqlEventStoreConfig-    store' = serializedEventStore jsonStringSerializer store+    writer = serializedEventStoreWriter jsonStringSerializer $ postgresqlEventStoreWriter defaultSqlEventStoreConfig+    reader = serializedVersionedEventStoreReader jsonStringSerializer $ sqlEventStoreReader defaultSqlEventStoreConfig   pool <- liftIO $ runNoLoggingT (createPostgresqlPool connString 1)   initializePostgresqlEventStore pool   liftIO $ runSqlPool truncateTables pool-  return (store', pool)+  return (writer, reader, pool)  getTables :: MonadIO m => SqlPersistT m [Text] getTables = do@@ -49,11 +49,12 @@  postgresStoreRunner :: EventStoreRunner (SqlPersistT IO) postgresStoreRunner = EventStoreRunner $ \action -> do-  (store, pool) <- makeStore-  runSqlPool (action store) pool+  (writer, reader, pool) <- makeStore+  runSqlPool (action writer reader) pool -postgresStoreGlobalRunner :: GloballyOrderedEventStoreRunner (SqlPersistT IO)-postgresStoreGlobalRunner = GloballyOrderedEventStoreRunner $ \action -> do-  (store, pool) <- makeStore-  let globalStore = serializedGloballyOrderedEventStore jsonStringSerializer (sqlGloballyOrderedEventStore defaultSqlEventStoreConfig)-  runSqlPool (action store globalStore) pool+postgresStoreGlobalRunner :: GlobalStreamEventStoreRunner (SqlPersistT IO)+postgresStoreGlobalRunner = GlobalStreamEventStoreRunner $ \action -> do+  (writer, _, pool) <- makeStore+  let+    globalReader = serializedGlobalEventStoreReader jsonStringSerializer (sqlGlobalEventStoreReader defaultSqlEventStoreConfig)+  runSqlPool (action writer globalReader) pool
− tests/HLint.hs
@@ -1,19 +0,0 @@-module Main (main) where--import Language.Haskell.HLint (hlint)-import System.Exit (exitFailure, exitSuccess)--import Prelude (String, IO, null)--arguments :: [String]-arguments =-    [ "src"-    , "tests"-    , "-i=Redundant do"-    , "-i=Unused LANGUAGE pragma" -- This fails on DeriveGeneric-    ]--main :: IO ()-main = do-    hints <- hlint arguments-    if null hints then exitSuccess else exitFailure