keiro-dsl-0.18.0.0: test/fixtures/calendar-days.keiro
language keiro-dsl 6
context calendar-days
mapped structural value LocalDay {
haskell package=keiro-dsl module=Conformance.CalendarDays.Domain type=LocalDay
binding = "Conformance.CalendarDays.Bindings.localDayBinding"
binding-version = "1"
canonical-type = "conformance.calendar-days.LocalDay.v1"
fixtures = "Conformance.CalendarDays.Bindings.localDayFixtures"
initial = "Conformance.CalendarDays.Bindings.initialLocalDay"
wire Day
}
mapped structural value MaybeLocalDay {
haskell package=keiro-dsl module=Conformance.CalendarDays.Domain type=MaybeLocalDay
binding = "Conformance.CalendarDays.Bindings.maybeLocalDayBinding"
binding-version = "1"
canonical-type = "conformance.calendar-days.MaybeLocalDay.v1"
fixtures = "Conformance.CalendarDays.Bindings.maybeLocalDayFixtures"
wire Optional Day
}
mapped structural record CalendarEnvelope {
haskell package=keiro-dsl module=Conformance.CalendarDays.Domain type=CalendarEnvelope
binding = "Conformance.CalendarDays.Bindings.calendarEnvelopeBinding"
binding-version = "1"
canonical-type = "conformance.calendar-days.CalendarEnvelope.v1"
fixtures = "Conformance.CalendarDays.Bindings.calendarEnvelopeFixtures"
wire object constructor=CalendarEnvelope unknown-fields=reject {
primary as "primary" : Day required
optionalDay as "optionalDay" : Optional Day optional on-missing=null
namedOptional as "namedOptional" : MaybeLocalDay required
sequence as "sequence" : List Day required
labelled as "labelled" : Map Day required
}
}
aggregate CalendarStore
regs
current LocalDay = initial
states Empty Stored!
command StoreDate { day:LocalDay optionalDay:MaybeLocalDay envelope:CalendarEnvelope }
event DateStored = fields(StoreDate)
event DateAudited = fields(StoreDate)
Empty -- StoreDate -->
write current := day
emit DateStored
emit DateAudited
goto Stored
wire kind=ctorName fields=camelCase schemaVersion=1
snapshot every 1
state-codec version=1 shape-hash="calendar-days-v1"
workqueue calendar_jobs {
queue logical = "calendar.jobs"
derive physical = "calendar_jobs"
dlq = "calendar_jobs_dlq"
table = "pgmq.q_calendar_jobs"
payload CalendarJob {
day -> "day" : LocalDay
optionalDay -> "optional_day" : MaybeLocalDay
envelope -> "envelope" : CalendarEnvelope
}
retry maxRetries = 3 delay = 1s dlq = on
disposition {
storeFailure -> retry 1s
commandRejected -> deadLetter
decodeFailure -> deadLetter
onCodecReject -> deadLetter
}
}
target calendar_table {
schema = "public"
table = "calendar_values"
reset = clear
}
rebuild-group calendar_rebuild {
targets = [ calendar_table ]
order = [ calendar_table ]
}
projection-owner calendar_writer {
source = all
delivery = subscription
group = calendar_rebuild
targets = [ calendar_table ]
order = 10
subscription = "calendar-writer"
dedup = "calendar-writer-v1"
checkpoint-on-missing = from-beginning
replay = explicit
}
readmodel calendar_lookup {
columns {}
query input = MaybeLocalDay
query result = CalendarEnvelope
version = 1
shape = "fnv1a:3c07a19c552c3547"
freshness = wait-for-head entire-log
group = calendar_rebuild
targets = [ calendar_table ]
}