packages feed

eventium-memory-0.1.0: tests/MemoryTestImport.hs

module MemoryTestImport
  ( EmbeddedState (..),
    StreamEmbeddedState,
    GlobalStreamEmbeddedState,
    emptyEmbeddedState,
    setEventMap,
    setProjectionMap,
  )
where

import Eventium.ProjectionCache.Memory
import Eventium.Store.Memory
import Eventium.UUID

data EmbeddedState state event key position
  = EmbeddedState
  { _embeddedDummyArgument :: Int,
    embeddedEventMap :: EventMap event,
    embeddedProjectionMap :: ProjectionMap key position state
  }

type StreamEmbeddedState state event = EmbeddedState state event UUID EventVersion

type GlobalStreamEmbeddedState state event key = EmbeddedState state event key SequenceNumber

emptyEmbeddedState :: EmbeddedState state event key position
emptyEmbeddedState = EmbeddedState 100 emptyEventMap emptyProjectionMap

setEventMap :: EmbeddedState state event key position -> EventMap event -> EmbeddedState state event key position
setEventMap state' eventMap = state' {embeddedEventMap = eventMap}

setProjectionMap ::
  EmbeddedState state event key position ->
  ProjectionMap key position state ->
  EmbeddedState state event key position
setProjectionMap state' projectionMap = state' {embeddedProjectionMap = projectionMap}