packages feed

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