keiro-dsl-0.11.0.0: test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.11.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
module Generated.Billing.Subscription.Domain where
import Data.Proxy (Proxy (..))
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Generated.Billing.Nominals (CustomerId, Plan (..), SubscriptionId)
import Keiki.Generics.TH (deriveAggregateCtorsAll, deriveWireCtorsAll)
data SubscriptionVertex = SubscriptionInactive | SubscriptionActive | SubscriptionClosed
deriving stock (Generic, Eq, Ord, Show, Enum, Bounded)
data ActivateSubscriptionData = ActivateSubscriptionData
{ subscriptionId :: !SubscriptionId
, customerId :: !CustomerId
, plan :: !Plan
}
deriving stock (Generic, Eq, Show)
data CancelSubscriptionData = CancelSubscriptionData
{ subscriptionId :: !SubscriptionId
, customerId :: !CustomerId
}
deriving stock (Generic, Eq, Show)
data SubscriptionCommand = ActivateSubscription !ActivateSubscriptionData
| CancelSubscription !CancelSubscriptionData
deriving stock (Generic, Eq, Show)
data SubscriptionActivatedData = SubscriptionActivatedData
{ subscriptionId :: !SubscriptionId
, customerId :: !CustomerId
, plan :: !Plan
}
deriving stock (Generic, Eq, Show)
data SubscriptionCancelledData = SubscriptionCancelledData
{ subscriptionId :: !SubscriptionId
, customerId :: !CustomerId
}
deriving stock (Generic, Eq, Show)
data SubscriptionEvent = SubscriptionActivated !SubscriptionActivatedData
| SubscriptionCancelled !SubscriptionCancelledData
deriving stock (Generic, Eq, Show)
type SubscriptionRegs =
'[ '("plan", Plan)
]
initialSubscriptionRegs :: RegFile SubscriptionRegs
initialSubscriptionRegs =
RCons (Proxy @"plan") Free RNil
$(deriveAggregateCtorsAll ''SubscriptionCommand ''SubscriptionRegs)
$(deriveWireCtorsAll ''SubscriptionEvent)