eventful-sql-common 0.1.3 → 0.2.0
raw patch · 2 files changed
+34/−28 lines, 2 filesdep ~eventful-corePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: eventful-core
API changes (from Hackage documentation)
- Eventful.Store.Sql.Operations: sqlGloballyOrderedEventStore :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> GloballyOrderedEventStore serialized (SqlPersistT m)
+ Eventful.Store.Sql.Operations: sqlEventStoreReader :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> VersionedEventStoreReader (SqlPersistT m) serialized
+ Eventful.Store.Sql.Operations: sqlGlobalEventStoreReader :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> GlobalEventStoreReader (SqlPersistT m) serialized
- Eventful.Store.Sql.Operations: sqlGetAggregateEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> UUID -> EventStoreQueryRange EventVersion -> SqlPersistT m [StoredEvent serialized]
+ Eventful.Store.Sql.Operations: sqlGetAggregateEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> QueryRange UUID EventVersion -> SqlPersistT m [VersionedStreamEvent serialized]
Files
eventful-sql-common.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: eventful-sql-common-version: 0.1.3+version: 0.2.0 synopsis: Common library for SQL event stores description: Common library for SQL event stores category: Database,Eventsourcing
src/Eventful/Store/Sql/Operations.hs view
@@ -5,7 +5,8 @@ module Eventful.Store.Sql.Operations ( SqlEventStoreConfig (..)- , sqlGloballyOrderedEventStore+ , sqlEventStoreReader+ , sqlGlobalEventStoreReader , sqlGetProjectionIds , sqlGetAggregateEvents , sqlMaxEventVersion@@ -42,26 +43,32 @@ , sqlEventStoreConfigDataField :: EntityField entity serialized } -sqlGloballyOrderedEventStore+sqlEventStoreReader :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized- -> GloballyOrderedEventStore serialized (SqlPersistT m)-sqlGloballyOrderedEventStore config =- GloballyOrderedEventStore $ sqlGetAllEventsInRange config+ -> VersionedEventStoreReader (SqlPersistT m) serialized+sqlEventStoreReader config = EventStoreReader $ sqlGetAggregateEvents config -sqlEventToGloballyOrdered+sqlGlobalEventStoreReader+ :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend)+ => SqlEventStoreConfig entity serialized+ -> GlobalEventStoreReader (SqlPersistT m) serialized+sqlGlobalEventStoreReader config =+ EventStoreReader $ sqlGetAllEventsInRange config++sqlEventToGlobalStream :: SqlEventStoreConfig entity serialized -> Entity entity- -> GloballyOrderedEvent serialized-sqlEventToGloballyOrdered config@SqlEventStoreConfig{..} (Entity key event) =- storedEventToGloballyOrderedEvent (sqlEventStoreConfigUnKey key) (sqlEventToStored config event)+ -> GlobalStreamEvent serialized+sqlEventToGlobalStream config@SqlEventStoreConfig{..} (Entity key event) =+ StreamEvent () (sqlEventStoreConfigUnKey key) (sqlEventToVersioned config event) -sqlEventToStored+sqlEventToVersioned :: SqlEventStoreConfig entity serialized -> entity- -> StoredEvent serialized-sqlEventToStored SqlEventStoreConfig{..} entity =- StoredEvent+ -> VersionedStreamEvent serialized+sqlEventToVersioned SqlEventStoreConfig{..} entity =+ StreamEvent (sqlEventStoreConfigUUID entity) (sqlEventStoreConfigVersion entity) (sqlEventStoreConfigData entity)@@ -79,40 +86,39 @@ sqlGetAggregateEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized- -> UUID- -> EventStoreQueryRange EventVersion- -> SqlPersistT m [StoredEvent serialized]-sqlGetAggregateEvents config@SqlEventStoreConfig{..} uuid EventStoreQueryRange{..} = do+ -> QueryRange UUID EventVersion+ -> SqlPersistT m [VersionedStreamEvent serialized]+sqlGetAggregateEvents config@SqlEventStoreConfig{..} QueryRange{..} = do entities <- selectList filters selectOpts- return $ sqlEventToStored config . entityVal <$> entities+ return $ sqlEventToVersioned config . entityVal <$> entities where startFilter =- case eventStoreQueryRangeStart of+ case queryRangeStart of StartFromBeginning -> [] StartQueryAt start -> [sqlEventStoreConfigVersionField >=. start] (endFilter, endSelectOpt) =- case eventStoreQueryRangeLimit of+ case queryRangeLimit of NoQueryLimit -> ([], []) MaxNumberOfEvents maxNum -> ([], [LimitTo maxNum]) StopQueryAt stop -> ([sqlEventStoreConfigVersionField <=. stop], [])- filters = (sqlEventStoreConfigUUIDField ==. uuid) : startFilter ++ endFilter+ filters = (sqlEventStoreConfigUUIDField ==. queryRangeKey) : startFilter ++ endFilter selectOpts = Asc sqlEventStoreConfigSequenceNumberField : endSelectOpt sqlGetAllEventsInRange :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized- -> EventStoreQueryRange SequenceNumber- -> SqlPersistT m [GloballyOrderedEvent serialized]-sqlGetAllEventsInRange config@SqlEventStoreConfig{..} EventStoreQueryRange{..} = do+ -> QueryRange () SequenceNumber+ -> SqlPersistT m [GlobalStreamEvent serialized]+sqlGetAllEventsInRange config@SqlEventStoreConfig{..} QueryRange{..} = do entities <- selectList filters selectOpts- return $ sqlEventToGloballyOrdered config <$> entities+ return $ sqlEventToGlobalStream config <$> entities where startFilter =- case eventStoreQueryRangeStart of+ case queryRangeStart of StartFromBeginning -> [] StartQueryAt start -> [sqlEventStoreConfigSequenceNumberField >=. sqlEventStoreConfigMakeKey start] (endFilter, endSelectOpt) =- case eventStoreQueryRangeLimit of+ case queryRangeLimit of NoQueryLimit -> ([], []) MaxNumberOfEvents maxNum -> ([], [LimitTo maxNum]) StopQueryAt stop -> ([sqlEventStoreConfigSequenceNumberField <=. sqlEventStoreConfigMakeKey stop], [])