keiro-dsl-0.9.0.0: test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
-- @generated by keiro-dsl 0.8.0.0 (language keiro-dsl 4) from aggregate Subscription; do not edit.
module Generated.Billing.Subscription.Domain where
import Data.Proxy (Proxy (..))
import Data.Text (Text)
import GHC.Generics (Generic)
import Keiki.Core (RegFile (..))
import Generated.Billing.Nominals (CustomerId, parseCustomerId, Plan (..), SubscriptionId, parseSubscriptionId)
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)