packages feed

keiro-dsl-0.15.0.0: test/fixtures/nominal-scalars.keiro

language keiro-dsl 4
context nominal-scalars

id OrderId prefix=ord using {
  haskell package=nominal-conformance module=NominalConformance.Domain type=OrderId
  binding = "NominalConformance.Bindings.orderIdBinding"
  binding-version = "1"
  canonical-type = "nominal.OrderId.v1"
  fixtures = "NominalConformance.Bindings.orderIdFixtures"
  initial = "NominalConformance.Bindings.initialOrderId"
}

enum OrderStatus { Draft=draft Submitted=submitted } using {
  haskell package=nominal-conformance module=NominalConformance.Domain type=OrderStatus
  binding = "NominalConformance.Bindings.orderStatusBinding"
  binding-version = "1"
  canonical-type = "nominal.OrderStatus.v1"
  fixtures = "NominalConformance.Bindings.orderStatusFixtures"
  initial = "NominalConformance.Bindings.initialOrderStatus"
}

mapped nominal AccountNumber : Text {
  haskell package=nominal-conformance module=NominalConformance.Domain type=AccountNumber
  binding = "NominalConformance.Bindings.accountNumberBinding"
  binding-version = "1"
  canonical-type = "nominal.AccountNumber.v1"
  fixtures = "NominalConformance.Bindings.accountNumberFixtures"
  initial = "NominalConformance.Bindings.initialAccountNumber"
}

mapped nominal RiskScore : Int {
  haskell package=nominal-conformance module=NominalConformance.Domain type=RiskScore
  binding = "NominalConformance.Bindings.riskScoreBinding"
  binding-version = "1"
  canonical-type = "nominal.RiskScore.v1"
  fixtures = "NominalConformance.Bindings.riskScoreFixtures"
  initial = "NominalConformance.Bindings.initialRiskScore"
}

mapped nominal SequenceNumber : Natural {
  haskell package=nominal-conformance module=NominalConformance.Domain type=SequenceNumber
  binding = "NominalConformance.Bindings.sequenceNumberBinding"
  binding-version = "1"
  canonical-type = "nominal.SequenceNumber.v1"
  fixtures = "NominalConformance.Bindings.sequenceNumberFixtures"
  initial = "NominalConformance.Bindings.initialSequenceNumber"
}

mapped nominal FeatureFlag : Bool {
  haskell package=nominal-conformance module=NominalConformance.Domain type=FeatureFlag
  binding = "NominalConformance.Bindings.featureFlagBinding"
  binding-version = "1"
  canonical-type = "nominal.FeatureFlag.v1"
  fixtures = "NominalConformance.Bindings.featureFlagFixtures"
  initial = "NominalConformance.Bindings.initialFeatureFlag"
}

mapped nominal ObservedAt : Time {
  haskell package=nominal-conformance module=NominalConformance.Domain type=ObservedAt
  binding = "NominalConformance.Bindings.observedAtBinding"
  binding-version = "1"
  canonical-type = "nominal.ObservedAt.v1"
  fixtures = "NominalConformance.Bindings.observedAtFixtures"
  initial = "NominalConformance.Bindings.initialObservedAt"
}

aggregate NominalLedger
  regs
    orderId OrderId = initial
    status OrderStatus = initial
    accountNumber AccountNumber = initial
    riskScore RiskScore = initial
    sequenceNumber SequenceNumber = initial
    featureFlag FeatureFlag = initial
    observedAt ObservedAt = initial
  states Empty Recorded!

  command RecordNominals {
    orderId:OrderId status:OrderStatus accountNumber:AccountNumber riskScore:RiskScore
    sequenceNumber:SequenceNumber featureFlag:FeatureFlag observedAt:ObservedAt
  }
  event NominalsRecorded = fields(RecordNominals)

  Empty -- RecordNominals -->
    guard cmd.orderId == reg.orderId && cmd.status == reg.status
    write orderId := cmd.orderId
    write status := cmd.status
    write accountNumber := cmd.accountNumber
    write riskScore := cmd.riskScore
    write sequenceNumber := cmd.sequenceNumber
    write featureFlag := cmd.featureFlag
    write observedAt := cmd.observedAt
    emit NominalsRecorded
    goto Recorded

  wire kind=ctorName fields=camelCase schemaVersion=1
  snapshot every 1
    state-codec version=1 shape-hash="nominal-scalars-v1"