module Network.AWS.Loup.Types.Ctx
( module Network.AWS.Loup.Types.Ctx
) where
import Control.Monad.Trans.AWS
import Network.AWS.Loup.Prelude
import Network.AWS.Loup.Types.Product
import Network.AWS.SWF
data AmazonCtx = AmazonCtx
{ _acStatsCtx :: StatsCtx
, _acEnv :: Env
}
$(makeClassyConstraints ''AmazonCtx [''HasStatsCtx, ''HasEnv])
instance HasStatsCtx AmazonCtx where
statsCtx = acStatsCtx
instance HasCtx AmazonCtx where
ctx = statsCtx . ctx
instance HasEnv AmazonCtx where
environment = acEnv
type MonadAmazonCtx c m =
( MonadStatsCtx c m
, HasAmazonCtx c
, AWSConstraint c m
)
data DecisionCtx = DecisionCtx
{ _dcStatsCtx :: StatsCtx
, _dcPlan :: Plan
, _dcEvents :: [HistoryEvent]
}
$(makeClassyConstraints ''DecisionCtx [''HasStatsCtx])
instance HasStatsCtx DecisionCtx where
statsCtx = dcStatsCtx
instance HasCtx DecisionCtx where
ctx = statsCtx . ctx
type MonadDecisionCtx c m =
( MonadStatsCtx c m
, HasDecisionCtx c
)