###############################################
## Adjustment File Apply Workflow Trigger    ##
###############################################

# Triggered by Outbox Message Event "adjustment_apply.requested".
# NOTE: no producer writes this event yet — the backend cutover is a follow-up.
resource "aws_cloudwatch_event_rule" "adjustment_file_apply_trigger" {
  name        = "${var.environment}-adjustment-file-apply-trigger"
  description = "Trigger adjustment file apply workflow on adjustment_apply.requested event"

  event_pattern = jsonencode({
    source      = ["abacus.outbox"]
    detail-type = ["adjustment_apply.requested"]
    detail = {
      metadata = {
        target_type = ["statement_period_adjustment_file"]
      }
    }
  })

  tags = {
    application_family = var.application_family
    environment        = var.environment
    service_name       = var.service_name
    terraformed        = true
  }
}

resource "aws_cloudwatch_event_target" "adjustment_file_apply_workflow_target" {
  rule      = aws_cloudwatch_event_rule.adjustment_file_apply_trigger.name
  target_id = "AdjustmentFileApplyStepFunctions"
  arn       = aws_sfn_state_machine.adjustment_file_apply_workflow.arn
  role_arn  = aws_iam_role.abacus_eventbridge_sfn_role.arn

  retry_policy {
    maximum_event_age_in_seconds = 86400 # 24 hours
    maximum_retry_attempts       = 3
  }

  dead_letter_config {
    arn = aws_sqs_queue.adjustment_file_apply_workflow_dlq.arn
  }
}
