# locals =====================================================================

data "aws_availability_zones" "available" {
  state = "available"
}

locals {
  region_abbr = split("-", data.aws_availability_zones.available.zone_ids[0])[0]

  is_alb = var.load_balancer_type == "application"
  is_nlb = var.load_balancer_type == "network"

  lb_name = "${var.name_prefix}-${local.region_abbr}-${var.load_balancer_type == "application" ? "alb" : "nlb"}-${var.name_suffix}"

  module_tags = {
    managed-by  = "terraform"
    module-name = "compute:lb-standard"
  }

  target_group_names = {
    for k, v in var.target_groups :
    k => "${var.name_prefix}-${local.region_abbr}-tg-${v.name_suffix}"
  }

  listener_keys = {
    for k, v in var.listeners :
    k => "${local.lb_name}-listener-${v.port}"
  }

  target_attachments = {
    for item in flatten([
      for tg_key, tg in var.target_groups : [
        for target_key, target in tg.targets : {
          key              = "${tg_key}-${target_key}"
          target_group_key = tg_key
          target_id        = target.id
          port             = target.port
        }
      ]
    ]) : item.key => item
  }
}
