packages feed

keiro-dsl-0.10.0.0: test/conformance-coldstart/Generated/Billing/Subscription/Domain.hs

{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE TemplateHaskell #-}
-- @generated by keiro-dsl 0.9.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)