packages feed

keiro-dsl-0.15.0.0: test/fixtures/structural-conformance.keiro

language keiro-dsl 4
context structural-conformance

mapped structural record ArtifactInfo {
  haskell package=keiro-dsl module=Conformance.Structural.Domain type=ArtifactInfo
  binding = "Conformance.Structural.Bindings.artifactInfoBinding"
  binding-version = "1"
  canonical-type = "conformance.structural.ArtifactInfo.v1"
  fixtures = "Conformance.Structural.Bindings.artifactInfoCases"
  initial = "Conformance.Structural.Bindings.emptyArtifactInfo"
  wire object constructor=ArtifactInfo unknown-fields=reject {
    artifactKey  as "artifact_key"  : Text             required
    displayName  as "display_name"  : Text             required
    artifactHash as "artifact_hash" : Optional Text    optional on-missing=null
    artifactKind as "artifact_kind" : ArtifactKind     optional on-missing=Guide
    location     as "location"      : ArtifactLocation required
    metadata     as "metadata"      : ArtifactMetadata required
    active       as "active"        : Bool             optional on-missing=false
    tags         as "tags"          : List Text        optional on-missing=[]
  }
}

mapped structural record ArtifactMetadata {
  haskell package=keiro-dsl module=Conformance.Structural.Domain type=ArtifactMetadata
  binding = "Conformance.Structural.Bindings.artifactMetadataBinding"
  binding-version = "1"
  canonical-type = "conformance.structural.ArtifactMetadata.v1"
  fixtures = "Conformance.Structural.Bindings.artifactMetadataCases"
  wire object constructor=ArtifactMetadata unknown-fields=ignore {
    note as "note" : Optional Text required
  }
}

mapped structural enum ArtifactKind {
  haskell package=keiro-dsl module=Conformance.Structural.Domain type=ArtifactKind
  binding = "Conformance.Structural.Bindings.artifactKindBinding"
  binding-version = "1"
  canonical-type = "conformance.structural.ArtifactKind.v1"
  fixtures = "Conformance.Structural.Bindings.artifactKindCases"
  wire string {
    Guide as "guide"
    Reference as "reference"
  }
}

mapped structural union ArtifactLocation {
  haskell package=keiro-dsl module=Conformance.Structural.Domain type=ArtifactLocation
  binding = "Conformance.Structural.Bindings.artifactLocationBinding"
  binding-version = "1"
  canonical-type = "conformance.structural.ArtifactLocation.v1"
  fixtures = "Conformance.Structural.Bindings.artifactLocationCases"
  wire tagged-object tag="tag" contents="contents" unknown-fields=reject {
    LocalFile as "local_file" : Text
    LocalDir as "local_dir" : Text
    RepoPath as "repo_path" : Text
    LocUrl as "url" : Text
    Canonical as "canonical"
  }
}

mapped opaque VendorGeometry {
  haskell package=keiro-dsl module=Conformance.Structural.Domain type=Geometry
  codec = "vendor.geometry.json"
  version = "3"
  fixtures = "Conformance.Structural.Bindings.geometryCases"
  initial = "Conformance.Structural.Bindings.emptyGeometry"
}

aggregate ArtifactCatalog
  regs
    currentArtifact ArtifactInfo = initial
    currentGeometry VendorGeometry = initial
    acceptedCount Int = 0
  states Empty Observed!

  command ObserveArtifact { artifact:ArtifactInfo geometry:VendorGeometry accepted:Bool }
  event ArtifactRecorded = fields(ObserveArtifact)
  event ArtifactAccepted { accepted:Bool }

  Empty -- ObserveArtifact -->
    write currentArtifact := artifact
    write currentGeometry := geometry
    write acceptedCount := acceptedCount
    emit ArtifactRecorded
    emit ArtifactAccepted
    goto Observed

  wire kind=ctorName fields=camelCase schemaVersion=1