packages feed

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)