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