################################################
## Adjustment File Ingestion Workflow Trigger ##
################################################

# EventBridge rule to trigger Adjustment File Ingest Workflow
# Triggered by Outbox Message Event "file_upload.completed" for adjustments
resource "aws_cloudwatch_event_rule" "adjustment_file_ingest_trigger" {
  name        = "${var.environment}-adjustment-file-ingest-trigger"
  description = "Trigger adjustment file ingest workflow on file_upload.completed event"

  event_pattern = jsonencode({
    source      = ["abacus.outbox"]
    detail-type = ["file_upload.completed"]
    detail = {
      metadata = {
        target_type = ["file_upload"]
      }
      data = {
        upload_type = ["adjustments"]
      }
    }
  })

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

# EventBridge target to invoke Step Functions
resource "aws_cloudwatch_event_target" "adjustment_file_ingest_workflow_target" {
  rule      = aws_cloudwatch_event_rule.adjustment_file_ingest_trigger.name
  target_id = "AdjustmentFileIngestStepFunctions"
  arn       = aws_sfn_state_machine.adjustment_file_ingest_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_ingest_workflow_dlq.arn
  }
}
