keiro-dsl-0.18.0.0: test/fixtures/bare-containers.keiro
language keiro-dsl 6
context bare-containers
id ItemId prefix=item
mapped structural value MaybeText {
haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=MaybeText
binding = "Conformance.BareContainers.Bindings.maybeTextBinding"
binding-version = "1"
canonical-type = "conformance.bare-containers.MaybeText.v1"
fixtures = "Conformance.BareContainers.Bindings.maybeTextFixtures"
initial = "Conformance.BareContainers.Bindings.initialMaybeText"
wire Optional Text
}
mapped structural value TextList {
haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=TextList
binding = "Conformance.BareContainers.Bindings.textListBinding"
binding-version = "1"
canonical-type = "conformance.bare-containers.TextList.v1"
fixtures = "Conformance.BareContainers.Bindings.textListFixtures"
wire List Text
}
mapped structural value TextMap {
haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=TextMap
binding = "Conformance.BareContainers.Bindings.textMapBinding"
binding-version = "1"
canonical-type = "conformance.bare-containers.TextMap.v1"
fixtures = "Conformance.BareContainers.Bindings.textMapFixtures"
wire Map Text
}
mapped structural value NestedIds {
haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=NestedIds
binding = "Conformance.BareContainers.Bindings.nestedIdsBinding"
binding-version = "1"
canonical-type = "conformance.bare-containers.NestedIds.v1"
fixtures = "Conformance.BareContainers.Bindings.nestedIdsFixtures"
wire List (Optional ItemId)
}
mapped structural record BareEnvelope {
haskell package=keiro-dsl module=Conformance.BareContainers.Domain type=BareEnvelope
binding = "Conformance.BareContainers.Bindings.bareEnvelopeBinding"
binding-version = "1"
canonical-type = "conformance.bare-containers.BareEnvelope.v1"
fixtures = "Conformance.BareContainers.Bindings.bareEnvelopeFixtures"
wire object constructor=BareEnvelope unknown-fields=reject {
optionalLabel as "optionalLabel" : MaybeText optional on-missing=null
labels as "labels" : TextList optional on-missing=[]
attributes as "attributes" : TextMap optional on-missing={}
nestedIds as "nestedIds" : NestedIds required
}
}
aggregate BareStore
regs
current MaybeText = initial
states Empty Stored!
command Store { optionalLabel:MaybeText labels:TextList attributes:TextMap envelope:BareEnvelope }
event StoredValue = fields(Store)
Empty -- Store -->
write current := optionalLabel
emit StoredValue
goto Stored
wire kind=ctorName fields=camelCase schemaVersion=1
snapshot every 1
state-codec version=1 shape-hash="bare-containers-v1"
workqueue bare_jobs {
queue logical = "bare.jobs"
derive physical = "bare_jobs"
dlq = "bare_jobs_dlq"
table = "pgmq.q_bare_jobs"
payload BareJob {
optionalLabel -> "optional_label" : MaybeText
labels -> "labels" : TextList
}
retry maxRetries = 3 delay = 1s dlq = on
disposition {
storeFailure -> retry 1s
commandRejected -> deadLetter
decodeFailure -> deadLetter
onCodecReject -> deadLetter
}
}
target bare_table {
schema = "public"
table = "bare_values"
reset = clear
}
rebuild-group bare_rebuild {
targets = [ bare_table ]
order = [ bare_table ]
}
projection-owner bare_writer {
source = all
delivery = subscription
group = bare_rebuild
targets = [ bare_table ]
order = 10
subscription = "bare-writer"
dedup = "bare-writer-v1"
checkpoint-on-missing = from-beginning
replay = explicit
}
readmodel bare_lookup {
columns {}
query input = MaybeText
query result = List TextList
version = 1
shape = "fnv1a:3c07a19c552c3547"
freshness = wait-for-head entire-log
group = bare_rebuild
targets = [ bare_table ]
}