module Data.CQRS.PersistedEvent
       ( PersistedEvent(..)
       ) where

import Control.DeepSeq (NFData(..))
import Data.CQRS.GUID (GUID)
import Data.DeriveTH (derive, makeNFData)

-- | Persisted Event.
data PersistedEvent e =
  PersistedEvent { peAggregateGUID :: !GUID -- ^ GUID of the aggregate.
                 , peEvent :: !e            -- ^ Event.
                 , peSequenceNumber :: !Int -- ^ Sequence number within the aggregate.
                 }
  deriving (Show, Eq, Ord, Functor)

$(derive makeNFData ''PersistedEvent)