packages feed

keiro-dsl-0.17.0.0: test/fixtures/workspace-nominals/domain/project-artifact.keiro

language keiro-dsl 6
context workspace-nominal-proof

mapped structural record ArtifactClaim {
  haskell package=keiro-dsl module=WorkspaceNominalProof.Domain type=ArtifactClaim
  binding = "WorkspaceNominalProof.Bindings.artifactClaimBinding"
  binding-version = "1"
  canonical-type = "workspace-nominal-proof.ArtifactClaim.v1"
  fixtures = "WorkspaceNominalProof.Bindings.artifactClaimFixtures"
  wire object constructor=ArtifactClaim unknown-fields=reject {
    claimId as "claimId" : ClaimId required
  }
}

aggregate ProjectArtifact
  regs
    projectId ProjectId = placeholder
    phase ProjectPhase = Draft
  states Empty Recorded!

  command RecordArtifact { projectId phase:ProjectPhase claim:ArtifactClaim }
  event ArtifactRecorded = fields(RecordArtifact)

  Empty -- RecordArtifact -->
    guard cmd.projectId == reg.projectId && cmd.phase == reg.phase
    write projectId := cmd.projectId
    write phase := cmd.phase
    emit ArtifactRecorded
    goto Recorded

  wire kind=ctorName fields=camelCase schemaVersion=1