-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Common library for SQL event stores
--   
--   Common library for SQL event stores
@package eventful-sql-common
@version 0.2.0

module Eventful.Store.Sql.JSONString

-- | A more specific type than just ByteString for JSON data.
data JSONString
jsonStringSerializer :: (ToJSON a, FromJSON a) => Serializer a JSONString
instance Database.Persist.Class.PersistField.PersistField Eventful.Store.Sql.JSONString.JSONString
instance GHC.Classes.Eq Eventful.Store.Sql.JSONString.JSONString
instance Database.Persist.Sql.Class.PersistFieldSql Eventful.Store.Sql.JSONString.JSONString
instance GHC.Show.Show Eventful.Store.Sql.JSONString.JSONString

module Eventful.Store.Sql.Orphans
instance Database.Persist.Class.PersistField.PersistField Data.UUID.Types.Internal.UUID
instance Database.Persist.Sql.Class.PersistFieldSql Data.UUID.Types.Internal.UUID
instance Database.Persist.Class.PersistField.PersistField Eventful.Store.Class.EventVersion
instance Database.Persist.Sql.Class.PersistFieldSql Eventful.Store.Class.EventVersion
instance Database.Persist.Class.PersistField.PersistField Eventful.Store.Class.SequenceNumber
instance Database.Persist.Sql.Class.PersistFieldSql Eventful.Store.Class.SequenceNumber

module Eventful.Store.Sql.Operations
data SqlEventStoreConfig entity serialized
SqlEventStoreConfig :: (UUID -> EventVersion -> serialized -> entity) -> (SequenceNumber -> Key entity) -> (Key entity -> SequenceNumber) -> (entity -> UUID) -> (entity -> EventVersion) -> (entity -> serialized) -> EntityField entity (Key entity) -> EntityField entity UUID -> EntityField entity EventVersion -> EntityField entity serialized -> SqlEventStoreConfig entity serialized
[sqlEventStoreConfigSequenceMakeEntity] :: SqlEventStoreConfig entity serialized -> UUID -> EventVersion -> serialized -> entity
[sqlEventStoreConfigMakeKey] :: SqlEventStoreConfig entity serialized -> SequenceNumber -> Key entity
[sqlEventStoreConfigUnKey] :: SqlEventStoreConfig entity serialized -> Key entity -> SequenceNumber
[sqlEventStoreConfigUUID] :: SqlEventStoreConfig entity serialized -> entity -> UUID
[sqlEventStoreConfigVersion] :: SqlEventStoreConfig entity serialized -> entity -> EventVersion
[sqlEventStoreConfigData] :: SqlEventStoreConfig entity serialized -> entity -> serialized
[sqlEventStoreConfigSequenceNumberField] :: SqlEventStoreConfig entity serialized -> EntityField entity (Key entity)
[sqlEventStoreConfigUUIDField] :: SqlEventStoreConfig entity serialized -> EntityField entity UUID
[sqlEventStoreConfigVersionField] :: SqlEventStoreConfig entity serialized -> EntityField entity EventVersion
[sqlEventStoreConfigDataField] :: SqlEventStoreConfig entity serialized -> EntityField entity serialized
sqlEventStoreReader :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> VersionedEventStoreReader (SqlPersistT m) serialized
sqlGlobalEventStoreReader :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> GlobalEventStoreReader (SqlPersistT m) serialized
sqlGetProjectionIds :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> SqlPersistT m [UUID]
sqlGetAggregateEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> QueryRange UUID EventVersion -> SqlPersistT m [VersionedStreamEvent serialized]
sqlMaxEventVersion :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> (DBName -> DBName -> DBName -> Text) -> UUID -> SqlPersistT m EventVersion
sqlStoreEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> Maybe (Text -> Text) -> (DBName -> DBName -> DBName -> Text) -> UUID -> [serialized] -> SqlPersistT m ()


-- | Definition for a default Entity to use with a SQL event store.
module Eventful.Store.Sql.DefaultEntity
data SqlEvent
SqlEvent :: !UUID -> !EventVersion -> !JSONString -> SqlEvent
[sqlEventUuid] :: SqlEvent -> !UUID
[sqlEventVersion] :: SqlEvent -> !EventVersion
[sqlEventEvent] :: SqlEvent -> !JSONString
type SqlEventId = Key SqlEvent
migrateSqlEvent :: Migration
defaultSqlEventStoreConfig :: SqlEventStoreConfig SqlEvent JSONString
instance GHC.Show.Show Eventful.Store.Sql.DefaultEntity.SqlEvent
instance Data.Aeson.Types.FromJSON.FromJSON (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance Data.Aeson.Types.ToJSON.ToJSON (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance Database.Persist.Sql.Class.PersistFieldSql (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance Database.Persist.Class.PersistField.PersistField (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance Web.Internal.HttpApiData.FromHttpApiData (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance Web.Internal.HttpApiData.ToHttpApiData (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance Web.PathPieces.PathPiece (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance GHC.Classes.Ord (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance GHC.Classes.Eq (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance GHC.Read.Read (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance GHC.Show.Show (Database.Persist.Class.PersistEntity.Key Eventful.Store.Sql.DefaultEntity.SqlEvent)
instance Database.Persist.Class.PersistField.PersistField Eventful.Store.Sql.DefaultEntity.SqlEvent
instance Database.Persist.Sql.Class.PersistFieldSql Eventful.Store.Sql.DefaultEntity.SqlEvent
instance Database.Persist.Class.PersistEntity.PersistEntity Eventful.Store.Sql.DefaultEntity.SqlEvent

module Eventful.Store.Sql

-- | A more specific type than just ByteString for JSON data.
data JSONString
jsonStringSerializer :: (ToJSON a, FromJSON a) => Serializer a JSONString
data SqlEventStoreConfig entity serialized
SqlEventStoreConfig :: (UUID -> EventVersion -> serialized -> entity) -> (SequenceNumber -> Key entity) -> (Key entity -> SequenceNumber) -> (entity -> UUID) -> (entity -> EventVersion) -> (entity -> serialized) -> EntityField entity (Key entity) -> EntityField entity UUID -> EntityField entity EventVersion -> EntityField entity serialized -> SqlEventStoreConfig entity serialized
[sqlEventStoreConfigSequenceMakeEntity] :: SqlEventStoreConfig entity serialized -> UUID -> EventVersion -> serialized -> entity
[sqlEventStoreConfigMakeKey] :: SqlEventStoreConfig entity serialized -> SequenceNumber -> Key entity
[sqlEventStoreConfigUnKey] :: SqlEventStoreConfig entity serialized -> Key entity -> SequenceNumber
[sqlEventStoreConfigUUID] :: SqlEventStoreConfig entity serialized -> entity -> UUID
[sqlEventStoreConfigVersion] :: SqlEventStoreConfig entity serialized -> entity -> EventVersion
[sqlEventStoreConfigData] :: SqlEventStoreConfig entity serialized -> entity -> serialized
[sqlEventStoreConfigSequenceNumberField] :: SqlEventStoreConfig entity serialized -> EntityField entity (Key entity)
[sqlEventStoreConfigUUIDField] :: SqlEventStoreConfig entity serialized -> EntityField entity UUID
[sqlEventStoreConfigVersionField] :: SqlEventStoreConfig entity serialized -> EntityField entity EventVersion
[sqlEventStoreConfigDataField] :: SqlEventStoreConfig entity serialized -> EntityField entity serialized
sqlEventStoreReader :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> VersionedEventStoreReader (SqlPersistT m) serialized
sqlGlobalEventStoreReader :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> GlobalEventStoreReader (SqlPersistT m) serialized
sqlGetProjectionIds :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> SqlPersistT m [UUID]
sqlGetAggregateEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> QueryRange UUID EventVersion -> SqlPersistT m [VersionedStreamEvent serialized]
sqlMaxEventVersion :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> (DBName -> DBName -> DBName -> Text) -> UUID -> SqlPersistT m EventVersion
sqlStoreEvents :: (MonadIO m, PersistEntity entity, PersistEntityBackend entity ~ SqlBackend) => SqlEventStoreConfig entity serialized -> Maybe (Text -> Text) -> (DBName -> DBName -> DBName -> Text) -> UUID -> [serialized] -> SqlPersistT m ()
type SqlEventId = Key SqlEvent
data SqlEvent
SqlEvent :: !UUID -> !EventVersion -> !JSONString -> SqlEvent
[sqlEventUuid] :: SqlEvent -> !UUID
[sqlEventVersion] :: SqlEvent -> !EventVersion
[sqlEventEvent] :: SqlEvent -> !JSONString
migrateSqlEvent :: Migration
defaultSqlEventStoreConfig :: SqlEventStoreConfig SqlEvent JSONString
