packages feed

eventful-sql-common 0.1.2 → 0.1.3

raw patch · 2 files changed

+33/−16 lines, 2 filesdep ~eventful-corePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: eventful-core

API changes (from Hackage documentation)

- Eventful.Store.Sql.Operations: sqlGetAggregateEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> UUID -> Maybe EventVersion -> SqlPersistT m [StoredEvent serialized]
+ Eventful.Store.Sql.Operations: sqlGetAggregateEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> UUID -> EventStoreQueryRange EventVersion -> SqlPersistT m [StoredEvent serialized]

Files

eventful-sql-common.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           eventful-sql-common-version:        0.1.2+version:        0.1.3 synopsis:       Common library for SQL event stores description:    Common library for SQL event stores category:       Database,Eventsourcing
src/Eventful/Store/Sql/Operations.hs view
@@ -47,7 +47,7 @@   => SqlEventStoreConfig entity serialized   -> GloballyOrderedEventStore serialized (SqlPersistT m) sqlGloballyOrderedEventStore config =-  GloballyOrderedEventStore $ sqlGetAllEventsFromSequence config+  GloballyOrderedEventStore $ sqlGetAllEventsInRange config  sqlEventToGloballyOrdered   :: SqlEventStoreConfig entity serialized@@ -80,27 +80,44 @@   :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend)   => SqlEventStoreConfig entity serialized   -> UUID-  -> Maybe EventVersion+  -> EventStoreQueryRange EventVersion   -> SqlPersistT m [StoredEvent serialized]-sqlGetAggregateEvents config@SqlEventStoreConfig{..} uuid mVers = do-  let-    constraints =-      (sqlEventStoreConfigUUIDField ==. uuid) :-      maybe [] (\vers -> [sqlEventStoreConfigVersionField >=. vers]) mVers-  entities <- selectList constraints [Asc sqlEventStoreConfigVersionField]+sqlGetAggregateEvents config@SqlEventStoreConfig{..} uuid EventStoreQueryRange{..} = do+  entities <- selectList filters selectOpts   return $ sqlEventToStored config . entityVal <$> entities+  where+    startFilter =+      case eventStoreQueryRangeStart of+        StartFromBeginning -> []+        StartQueryAt start -> [sqlEventStoreConfigVersionField >=. start]+    (endFilter, endSelectOpt) =+      case eventStoreQueryRangeLimit of+        NoQueryLimit -> ([], [])+        MaxNumberOfEvents maxNum -> ([], [LimitTo maxNum])+        StopQueryAt stop -> ([sqlEventStoreConfigVersionField <=. stop], [])+    filters = (sqlEventStoreConfigUUIDField ==. uuid) : startFilter ++ endFilter+    selectOpts = Asc sqlEventStoreConfigSequenceNumberField : endSelectOpt -sqlGetAllEventsFromSequence+sqlGetAllEventsInRange   :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend)   => SqlEventStoreConfig entity serialized-  -> SequenceNumber+  -> EventStoreQueryRange SequenceNumber   -> SqlPersistT m [GloballyOrderedEvent serialized]-sqlGetAllEventsFromSequence config@SqlEventStoreConfig{..} seqNum = do-  entities <--    selectList-    [sqlEventStoreConfigSequenceNumberField >=. sqlEventStoreConfigMakeKey seqNum]-    [Asc sqlEventStoreConfigSequenceNumberField]+sqlGetAllEventsInRange config@SqlEventStoreConfig{..} EventStoreQueryRange{..} = do+  entities <- selectList filters selectOpts   return $ sqlEventToGloballyOrdered config <$> entities+  where+    startFilter =+      case eventStoreQueryRangeStart of+        StartFromBeginning -> []+        StartQueryAt start -> [sqlEventStoreConfigSequenceNumberField >=. sqlEventStoreConfigMakeKey start]+    (endFilter, endSelectOpt) =+      case eventStoreQueryRangeLimit of+        NoQueryLimit -> ([], [])+        MaxNumberOfEvents maxNum -> ([], [LimitTo maxNum])+        StopQueryAt stop -> ([sqlEventStoreConfigSequenceNumberField <=. sqlEventStoreConfigMakeKey stop], [])+    filters = startFilter ++ endFilter+    selectOpts = Asc sqlEventStoreConfigSequenceNumberField : endSelectOpt  sqlMaxEventVersion   :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend)