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)