packages feed

keiro-dsl-0.15.0.0: test/frontend-0.7/workspaces/valid/domain/project.keiro

language keiro-dsl 1
context demo-project

aggregate Project
  regs
    projectId ProjectId      = placeholder
    phase     ProjectPhase   = Draft
    summary   ProjectSummary = initial
  states Unregistered Live Closed!

  command RegisterProject { projectId initialSummary:ProjectSummary }
  command RetireProject   { projectId phaseIsTerminal:Bool }

  event ProjectRegistered = fields(RegisterProject)
  event ProjectRetired    { projectId }

  Unregistered -- RegisterProject -->
    write phase   := Active
    write summary := initialSummary
    emit  ProjectRegistered
    goto  Live
  Live -- RetireProject -->
    guard phaseIsTerminal
    write phase := Retired
    emit  ProjectRetired
    goto  Closed

  wire kind=ctorName fields=camelCase schemaVersion=1
  projection project_activity key=projectId
    status-map { ProjectRegistered=>registered ProjectRetired=>retired }