resource "aws_acm_certificate" "wildcard_filtr_apollo_cert" {
  domain_name = "filtr.com"
  subject_alternative_names = [
    "apollo.stream",
    "*.filtr.com",
    "*.apollo.stream"
  ]
  validation_method = "DNS"

  tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "ACM",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_ACM"
    }
  )

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_route53_record" "wildcard_filtr_com_cert_validation_record" {
  provider = aws.gdb-delphi-dev

  name    = tolist(aws_acm_certificate.wildcard_filtr_apollo_cert.domain_validation_options)[1].resource_record_name
  type    = tolist(aws_acm_certificate.wildcard_filtr_apollo_cert.domain_validation_options)[1].resource_record_type
  zone_id = data.aws_route53_zone.filtr_com_domain.id
  records = [
    tolist(aws_acm_certificate.wildcard_filtr_apollo_cert.domain_validation_options)[1].resource_record_value,
  ]
  ttl = 60
}

resource "aws_route53_record" "wildcard_apollo_stream_cert_validation_record" {
  provider = aws.gdb-delphi-dev

  name    = tolist(aws_acm_certificate.wildcard_filtr_apollo_cert.domain_validation_options)[0].resource_record_name
  type    = tolist(aws_acm_certificate.wildcard_filtr_apollo_cert.domain_validation_options)[0].resource_record_type
  zone_id = data.aws_route53_zone.apollo_stream_domain.id
  records = [
    tolist(aws_acm_certificate.wildcard_filtr_apollo_cert.domain_validation_options)[0].resource_record_value,
  ]
  ttl = 60
}

resource "aws_acm_certificate_validation" "wildcard_apollo_filtr_cert_validation" {
  certificate_arn = aws_acm_certificate.wildcard_filtr_apollo_cert.arn
  validation_record_fqdns = [
    aws_route53_record.wildcard_filtr_com_cert_validation_record.fqdn,
    aws_route53_record.wildcard_apollo_stream_cert_validation_record.fqdn,
  ]
}
