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 +1/−23
- src/Eventful/Store/Postgresql.hs +5/−9
- tests/Eventful/Store/PostgresqlSpec.hs +13/−12
- tests/HLint.hs +0/−19
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