############################################
# IAM role
############################################
module "role" {
  source = "../lambda_execution_role"
  name   = "${var.name}-lambda-${var.stage}"
}

output "role_name" {
  value = module.role.role_name
}

############################################
# SQS queue + DLQ
############################################
module "queue" {
  source = "../sqs_queue"
  name   = "${var.name}-queue-${var.stage}"
}

############################################
# Lambda
############################################
module "lambda" {
  source = "../lambda_service"

  name      = "${var.name}-${var.stage}"
  role_arn = module.role.role_arn
  image_uri = var.image_uri

  timeout     = var.timeout
  memory_size = var.memory_size

  environment                     = var.environment
  reserved_concurrent_executions  = var.reserved_concurrent_executions
}

############################################
# SQS → Lambda trigger
############################################
module "sqs_trigger" {
  source = "../lambda_sqs_trigger"

  lambda_arn        = module.lambda.lambda_arn
  lambda_role_name = module.role.role_name
  queue_arn        = module.queue.queue_arn

  batch_size           = var.batch_size
  maximum_concurrency  = var.maximum_concurrency
}
