packages feed

keiro-dsl-0.6.0.0: test/conformance-scalar-expressions/Generated/AggregateScalarExpressions/ScalarAccount/Expressions.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE TypeApplications #-}
-- @generated by keiro-dsl; do not edit. Regenerated from the .keiro spec.
module Generated.AggregateScalarExpressions.ScalarAccount.Expressions
  ( transition1OpenAdjustGuard
  , transition1OpenAdjustWriteBalance
  , transition1OpenAdjustWriteReserved
  , transition1OpenAdjustWriteMachine
  , transition1OpenAdjustWriteLabel
  , transition1OpenAdjustWriteActive
  , transition1OpenAdjustWriteMode
  , transition1OpenAdjustWriteRequestId
  , transition1OpenAdjustWriteOpenedAt
  , transition1OpenAdjustWriteLimits
  ) where

import Generated.AggregateScalarExpressions.ScalarAccount.Domain
import Keiki.Builder qualified as B
import Keiki.Core qualified as K
import Keiki.Generics (RegFieldsOf)
import Data.Text (Text)
import Data.Time.Calendar (fromGregorian)
import Data.Time.Clock (UTCTime (..), picosecondsToDiffTime)
import Numeric.Natural (Natural)
import Generated.AggregateScalarExpressions.StructuralProjections qualified as StructuralProjections
import ScalarExpressions.Domain qualified

transition1OpenAdjustGuard :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.HsPred ScalarAccountRegs ScalarAccountCommand
transition1OpenAdjustGuard d = K.PAnd (K.PAnd (K.PAnd (K.PAnd (K.PCmp K.CmpGe (K.tadd (d.balance) (B.reg @"balance")) (K.lit (-100 :: Integer))) (K.PCmp K.CmpLe (K.tadd (B.reg @"reserved") (d.requested)) (B.reg @"capacity"))) (K.PCmp K.CmpGe (d.observedAt) (B.reg @"openedAt"))) (K.PCmp K.CmpGe (K.inpProj StructuralProjections.structuralProjectionC4cZC69ZC6dZC69ZC74ZC73ZC2fZC6dZC69ZC6eZC69ZC6dZC75ZC6dZWitness inCtorAdjust (#limits :: K.Index (RegFieldsOf AdjustData) ScalarExpressions.Domain.Limits)) (K.regProj StructuralProjections.structuralProjectionC4cZC69ZC6dZC69ZC74ZC73ZC2fZC6dZC69ZC6eZC69ZC6dZC75ZC6dZWitness (#limits :: K.Index ScalarAccountRegs ScalarExpressions.Domain.Limits)))) (K.PEq (d.active) (K.lit False))

transition1OpenAdjustWriteBalance :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) Integer
transition1OpenAdjustWriteBalance d = K.tadd (B.reg @"balance") (K.tmul (d.balance) (K.lit (2 :: Integer)))

transition1OpenAdjustWriteReserved :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) Natural
transition1OpenAdjustWriteReserved d = K.tadd (B.reg @"reserved") (K.tsub (d.requested) (B.reg @"capacity"))

transition1OpenAdjustWriteMachine :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) Int
transition1OpenAdjustWriteMachine d = K.lit (-7 :: Int)

transition1OpenAdjustWriteLabel :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) Text
transition1OpenAdjustWriteLabel d = K.lit ("adjusted" :: Text)

transition1OpenAdjustWriteActive :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) Bool
transition1OpenAdjustWriteActive d = K.lit True

transition1OpenAdjustWriteMode :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) AccountMode
transition1OpenAdjustWriteMode d = K.lit Restricted

transition1OpenAdjustWriteRequestId :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) RequestId
transition1OpenAdjustWriteRequestId d = K.lit (RequestId "req_00041061050r3gg28a1c60t3gf")

transition1OpenAdjustWriteOpenedAt :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) UTCTime
transition1OpenAdjustWriteOpenedAt d = K.lit (UTCTime (fromGregorian 2026 2 3) (picosecondsToDiffTime 14706000000000000))

transition1OpenAdjustWriteLimits :: B.PayloadProj ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) -> K.Term ScalarAccountRegs ScalarAccountCommand (RegFieldsOf AdjustData) ScalarExpressions.Domain.Limits
transition1OpenAdjustWriteLimits d = d.limits