{-| Module to import for the "Command" side of the application. -}
module Data.CQRS.Command
    ( -- Aggregate:
      Aggregate
      -- AggregateRef:
    , AggregateRef
      -- Eventable:
    , Eventable(..)
      -- EventStoreBackend:
    , EventStoreBackend
      -- GUID:
    , GUID
    , newGUID
      -- Repository:
    , Repository
      -- UnitOfWork:
    , UnitOfWorkT
    , createAggregate
    , createOrLoadAggregate
    , findAggregate
    , loadAggregate
    , publishEvent
    , runUnitOfWorkT
    ) where

import Data.CQRS.Aggregate (Aggregate)
import Data.CQRS.Internal.AggregateRef (AggregateRef)
import Data.CQRS.Internal.UnitOfWork
import Data.CQRS.Internal.Repository (Repository)
import Data.CQRS.Eventable (Eventable(..))
import Data.CQRS.EventStore.Backend (EventStoreBackend)
import Data.CQRS.GUID (GUID, newGUID)