variable "region" {
  type = string
}

variable "publicly_accessible" {
  type = bool
}

variable "use_vpc_resource_gateway" {
  type = bool
}

variable "vpc_lattice_region_unsupported_azs" {
  type = map(list(string))
}

variable "rds_proxy_unsupported_azs" {
  type = map(list(string))
}

variable "public_access_cidrs" {
  type = list(string)
}

variable "vpc_cidr_block" {
  type = string
}

resource "terraform_data" "rds_sg_ingress_cidr_blocks" {
  input = var.publicly_accessible ? var.public_access_cidrs : [var.vpc_cidr_block]

  lifecycle {
    ignore_changes = all
  }
}

output "rds_sg_ingress_cidr_blocks" {
  value = terraform_data.rds_sg_ingress_cidr_blocks.output
}

locals {
  exclude_zone_ids = var.use_vpc_resource_gateway ? (
    lookup(var.vpc_lattice_region_unsupported_azs, var.region, [])
    ) : (
    lookup(var.rds_proxy_unsupported_azs, var.region, [])
  )

  migrated_regions = ["eu-central-1"]
}

output "exclude_zone_ids" {
  value = contains(local.migrated_regions, var.region) ? [] : local.exclude_zone_ids
}

output "use_vpc_resource_gateway" {
  value = contains(local.migrated_regions, var.region) ? false : var.use_vpc_resource_gateway
}