locals {
  service        = "humand-worker"
  sqs_queue_name = element(split("/", var.sqs_queue_url), length(split("/", var.sqs_queue_url)) - 1)
}

module "this" {
  source = "../../worker_server"

  service = local.service

  aws_account   = var.env_config.aws_account
  env           = var.env_config.env
  humand_vpc_id = var.env_config.humand_vpc_id
  cluster_name  = var.env_config.private_cluster_name
  cidr_block    = var.env_config.cidr_block

  docker_image = var.docker_image

  node_type = "worker"

  cpu    = var.cpu
  memory = var.memory

  task_policies = {
    RdsPolicy          = aws_iam_policy.rds_policy.arn
    S3Policy           = aws_iam_policy.s3_policy.arn
    SNSPolicy          = aws_iam_policy.sns_policy.arn
    SQSPolicy          = aws_iam_policy.sqs_policy.arn
    EventBridgePolicy  = aws_iam_policy.event_bridge_policy.arn
    SESPolicy          = aws_iam_policy.ses_policy.arn
    LambdaPolicy       = aws_iam_policy.lambda_policy.arn
    OpenSearchPolicy   = aws_iam_policy.opensearch_policy.arn
    MediaConvertPolicy = aws_iam_policy.mediaconvert_policy.arn
  }

  secrets_overrides = var.secret_overrides
  environment_overrides = merge(var.environment_overrides, {
    AWS_SQS_DUPLICATION_COMPLETION_QUEUE_URL     = var.instance_duplication_queue_url
    AWS_SQS_FILE_ASSETS_SCAN_QUEUE_URL           = var.file_assets_scan_queue_url
    AWS_SQS_FILE_ASSETS_SCAN_DLQ_URL             = var.file_assets_scan_dlq_url
    AWS_SNS_FILE_ASSETS_SCAN_COMPLETED_TOPIC_ARN = var.file_assets_scan_completed_sns_topic_arn
  })

  fargate_spot_weight = floor(1000 * var.spot_ratio)
  fargate_weight      = 1000 - floor(1000 * var.spot_ratio)

  # Autoscaling configuration
  enable_autoscaling       = var.enable_autoscaling
  autoscaling_min_capacity = var.autoscaling_min_capacity
  autoscaling_max_capacity = var.autoscaling_max_capacity

  health_check_path = var.health_check_path
  ingress_lb_tg     = var.ingress_lb_tg

  autoscaling_type             = "sqs"
  sqs_queue_name               = local.sqs_queue_name
  sqs_messages_per_task_target = var.sqs_messages_per_task_target
  scale_in_cooldown            = var.scale_in_cooldown
  scale_out_cooldown           = var.scale_out_cooldown
}
