eventful-sqlite 0.1.3 → 0.2.0
raw patch · 4 files changed
+37/−79 lines, 4 filesdep −hlintPVP ok
version bump matches the API change (PVP)
Dependencies removed: hlint
API changes (from Hackage documentation)
- Eventful.Store.Sqlite: sqliteEventStore :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> EventStore serialized (SqlPersistT m)
+ Eventful.Store.Sqlite: sqliteEventStoreWriter :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> EventStoreWriter (SqlPersistT m) serialized
Files
- eventful-sqlite.cabal +1/−24
- src/Eventful/Store/Sqlite.hs +6/−9
- tests/Eventful/Store/SqliteSpec.hs +30/−26
- tests/HLint.hs +0/−20
eventful-sqlite.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: eventful-sqlite-version: 0.1.3+version: 0.2.0 synopsis: SQLite implementations for eventful description: SQLite implementations for eventful category: Database,Eventsourcing,SQLite@@ -65,28 +65,5 @@ , persistent-sqlite other-modules: Eventful.Store.SqliteSpec- HLint Eventful.Store.Sqlite- 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- , uuid- , hlint- other-modules:- Eventful.Store.SqliteSpec- Spec default-language: Haskell2010
src/Eventful/Store/Sqlite.hs view
@@ -5,7 +5,7 @@ -- | Defines an Sqlite event store. module Eventful.Store.Sqlite- ( sqliteEventStore+ ( sqliteEventStoreWriter , initializeSqliteEventStore , module Eventful.Store.Class , module Eventful.Store.Sql@@ -20,19 +20,16 @@ import Eventful.Store.Class import Eventful.Store.Sql --- | An 'EventStore' that uses an SQLite database as a backend. Use+-- | An 'EventStoreWriter' that uses an SQLite database as a backend. Use -- 'SqlEventStoreConfig' to configure this event store.-sqliteEventStore+sqliteEventStoreWriter :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized- -> EventStore serialized (SqlPersistT m)-sqliteEventStore config =- let+ -> EventStoreWriter (SqlPersistT m) serialized+sqliteEventStoreWriter config = EventStoreWriter $ transactionalExpectedWriteHelper getLatestVersion storeEvents'+ where getLatestVersion = sqlMaxEventVersion config maxSqliteVersionSql- getEvents = sqlGetAggregateEvents config storeEvents' = sqlStoreEvents config Nothing maxSqliteVersionSql- storeEvents = transactionalExpectedWriteHelper getLatestVersion storeEvents'- in EventStore{..} maxSqliteVersionSql :: DBName -> DBName -> DBName -> Text maxSqliteVersionSql (DBName tableName) (DBName uuidFieldName) (DBName versionFieldName) =
tests/Eventful/Store/SqliteSpec.hs view
@@ -12,47 +12,51 @@ spec = do describe "Sqlite event store" $ do eventStoreSpec sqliteStoreRunner- sequencedEventStoreSpec sqliteStoreGlobalRunner+ globalStreamEventStoreSpec sqliteStoreGlobalRunner -- This is really a test for runEventStoreUsing and- -- runGloballyOrderedEventStoreUsing. This is just a good place to put it.- describe "runEventStoreUsing and runGloballyOrderedEventStoreUsing for the sqlite store" $ do+ -- runGlobalStreamEventStoreUsing. This is just a good place to put it.+ describe "runEventStoreUsing and runGlobalStreamEventStoreUsing for the sqlite store" $ do eventStoreSpec sqliteIOStoreRunner- sequencedEventStoreSpec sqliteIOStoreGlobalRunner+ globalStreamEventStoreSpec sqliteIOStoreGlobalRunner -makeStore :: IO (EventStore CounterEvent (SqlPersistT IO), ConnectionPool)+makeStore :: IO (EventStoreWriter (SqlPersistT IO) CounterEvent, VersionedEventStoreReader (SqlPersistT IO) CounterEvent, ConnectionPool) makeStore = do pool <- liftIO $ runNoLoggingT (createSqlitePool ":memory:" 1)- let store = serializedEventStore jsonStringSerializer $ sqliteEventStore defaultSqlEventStoreConfig+ let+ writer = serializedEventStoreWriter jsonStringSerializer $ sqliteEventStoreWriter defaultSqlEventStoreConfig+ reader = serializedVersionedEventStoreReader jsonStringSerializer $ sqlEventStoreReader defaultSqlEventStoreConfig initializeSqliteEventStore defaultSqlEventStoreConfig pool- return (store, pool)+ return (writer, reader, pool) sqliteStoreRunner :: EventStoreRunner (SqlPersistT IO) sqliteStoreRunner = EventStoreRunner $ \action -> do- (store, pool) <- makeStore- runSqlPool (action store) pool+ (writer, reader, pool) <- makeStore+ runSqlPool (action writer reader) pool -sqliteStoreGlobalRunner :: GloballyOrderedEventStoreRunner (SqlPersistT IO)-sqliteStoreGlobalRunner = GloballyOrderedEventStoreRunner $ \action -> do- (store, pool) <- makeStore- let globalStore = serializedGloballyOrderedEventStore jsonStringSerializer (sqlGloballyOrderedEventStore defaultSqlEventStoreConfig)- runSqlPool (action store globalStore) pool+sqliteStoreGlobalRunner :: GlobalStreamEventStoreRunner (SqlPersistT IO)+sqliteStoreGlobalRunner = GlobalStreamEventStoreRunner $ \action -> do+ (writer, _, pool) <- makeStore+ let globalStore = serializedGlobalEventStoreReader jsonStringSerializer (sqlGlobalEventStoreReader defaultSqlEventStoreConfig)+ runSqlPool (action writer globalStore) pool -makeIOStore :: IO (EventStore CounterEvent IO, ConnectionPool)+makeIOStore :: IO (EventStoreWriter IO CounterEvent, VersionedEventStoreReader IO CounterEvent, ConnectionPool) makeIOStore = do- (store, pool) <- makeStore- let store' = runEventStoreUsing (flip runSqlPool pool) store- return (store', pool)+ (writer, reader, pool) <- makeStore+ let+ writer' = runEventStoreWriterUsing (flip runSqlPool pool) writer+ reader' = runEventStoreReaderUsing (flip runSqlPool pool) reader+ return (writer', reader', pool) sqliteIOStoreRunner :: EventStoreRunner IO sqliteIOStoreRunner = EventStoreRunner $ \action -> do- (store, _) <- makeIOStore- action store+ (writer, reader, _) <- makeIOStore+ action writer reader -sqliteIOStoreGlobalRunner :: GloballyOrderedEventStoreRunner IO-sqliteIOStoreGlobalRunner = GloballyOrderedEventStoreRunner $ \action -> do- (store, pool) <- makeIOStore+sqliteIOStoreGlobalRunner :: GlobalStreamEventStoreRunner IO+sqliteIOStoreGlobalRunner = GlobalStreamEventStoreRunner $ \action -> do+ (writer, _, pool) <- makeIOStore let- globalStore = serializedGloballyOrderedEventStore jsonStringSerializer (sqlGloballyOrderedEventStore defaultSqlEventStoreConfig)- globalStore' = runGloballyOrderedEventStoreUsing (flip runSqlPool pool) globalStore- action store globalStore'+ globalStore = serializedGlobalEventStoreReader jsonStringSerializer (sqlGlobalEventStoreReader defaultSqlEventStoreConfig)+ globalStore' = runEventStoreReaderUsing (flip runSqlPool pool) globalStore+ action writer globalStore'
− tests/HLint.hs
@@ -1,20 +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- , "-i=Use section"- ]--main :: IO ()-main = do- hints <- hlint arguments- if null hints then exitSuccess else exitFailure