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