packages feed

keiro-dsl-0.18.0.0: test/fixtures/checked-mapping-replay-workspace/domain/service.keiro

language keiro-dsl 6
context checked-mapping-replay

aggregate ReplayLedger
  regs
    current ReplayEnvelope = initial
    currentId RetainedId = placeholder
  states Empty Recorded!

  command Record { retainedId:RetainedId envelope:ReplayEnvelope }
  command ImportLegacy { retainedId:RetainedId envelope:ReplayEnvelope }
  event MappingRecorded = fields(Record)
  event MappingAudited = fields(Record)
  event LegacyMappingImported = fields(ImportLegacy)

  Empty -- Record -->
    write current := envelope
    write currentId := retainedId
    emit MappingRecorded
    emit MappingAudited
    goto Recorded

  replay-only Empty -- ImportLegacy -->
    write current := envelope
    write currentId := retainedId
    emit LegacyMappingImported
    goto Recorded

  wire kind=ctorName fields=camelCase schemaVersion=1
  snapshot every 1
    state-codec version=1 shape-hash="checked-mapping-replay-v1"

aggregate ReplayTarget
  regs
    latest ReplayEnvelope = initial
  states Ready
  command Store { retainedId:RetainedId envelope:ReplayEnvelope }
  event Stored = fields(Store)
  Ready -- Store --> write latest := envelope ; emit Stored ; goto Ready

process ReplayReaction
  name "checked-mapping-replay-reaction"
  reactions version 1
  input ReplayRequested { retainedId:RetainedId envelope:ReplayEnvelope }
  correlate input.retainedId via idText
  saga ReplayLedger category "checkedMappingReplaySaga"
  target ReplayTarget
  projections [ ]
  on ReplayRequested
    advance Record { retainedId envelope }
    dispatch ReplayTarget@input.retainedId Store { retainedId envelope }
      on-appended AckOk ; on-duplicate AckOk ; on-failed Retry
  dispatch-id strategy=uuidv5 from=(name, correlationId, sourceEventId, targetStreamName, occurrence)
  rejected => halt
  poison => halt

workqueue replay_jobs {
  queue logical = "checked.mapping.replay"
  derive physical = "checked_mapping_replay"
         dlq = "checked_mapping_replay_dlq"
         table = "pgmq.q_checked_mapping_replay"
  payload ReplayJob {
    retainedId -> "retained_id" : RetainedId
    envelope -> "envelope" : ReplayEnvelope
  }
  retry maxRetries = 3 delay = 1s dlq = on
  disposition {
    storeFailure -> retry 1s
    commandRejected -> deadLetter
    decodeFailure -> deadLetter
    onCodecReject -> deadLetter
  }
}

target replay_table {
  schema = "public"
  table = "checked_mapping_replay"
  reset = clear
}

rebuild-group replay_rebuild {
  targets = [ replay_table ]
  order = [ replay_table ]
}

projection-owner replay_writer {
  source = all
  delivery = subscription
  group = replay_rebuild
  targets = [ replay_table ]
  order = 10
  subscription = "checked-mapping-replay-writer"
  dedup = "checked-mapping-replay-writer-v1"
  checkpoint-on-missing = from-beginning
  replay = explicit
}

readmodel replay_lookup {
  columns {}
  query input = ReplayEnvelope
  query result = List ReplayEnvelope
  version = 1
  shape = "fnv1a:3c07a19c552c3547"
  freshness = wait-for-head entire-log
  group = replay_rebuild
  targets = [ replay_table ]
}

contract replay_events {
  schemaVersion 1
  discriminator messageType
  topic replayEvents "checked.mapping.replay.events"
  event ReplayLinked on replayEvents {
    retainedId: RetainedId
  }
}