persistent-event-source-0.1.0: src/Persistent/Event/Source/Projection.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilyDependencies #-}
module Persistent.Event.Source.Projection where
import Database.Persist.Monad(MonadSqlQuery)
import Control.Monad.IO.Unlift
import Control.Monad.Logger
-- | Projection is about setting your event sourced table to
-- data in the event.
class Projection a where
type Event a = ev | ev -> a
-- | Apply event to this context
-- Intended to have write access to the database for updating views
apply :: (MonadUnliftIO m, MonadLogger m, MonadSqlQuery m) => Event a -> m ()