# Wildcard apollo certificate
resource "aws_acm_certificate" "apollo_stream_cert" {
  domain_name       = "*.apollo.stream"
  validation_method = "DNS"

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

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_route53_record" "apollo_stream_cert_validation" {
  name    = tolist(aws_acm_certificate.apollo_stream_cert.domain_validation_options)[0].resource_record_name
  type    = tolist(aws_acm_certificate.apollo_stream_cert.domain_validation_options)[0].resource_record_type
  zone_id = data.aws_route53_zone.apollo_stream_zone.id
  records = [
    tolist(aws_acm_certificate.apollo_stream_cert.domain_validation_options)[0].resource_record_value,
  ]
  ttl      = 60
  provider = aws.gdb-delphi-dev
}

resource "aws_acm_certificate_validation" "apollo_stream_cert" {
  certificate_arn = aws_acm_certificate.apollo_stream_cert.arn
  validation_record_fqdns = [
  aws_route53_record.apollo_stream_cert_validation.fqdn]
}

# Wildcard delphiplatform.io certificate
resource "aws_acm_certificate" "delphiplatform_io_cert" {
  domain_name       = "*.delphiplatform.io"
  validation_method = "DNS"

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

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_route53_record" "delphiplatform_io_cert_validation" {
  name    = tolist(aws_acm_certificate.delphiplatform_io_cert.domain_validation_options)[0].resource_record_name
  type    = tolist(aws_acm_certificate.delphiplatform_io_cert.domain_validation_options)[0].resource_record_type
  zone_id = data.aws_route53_zone.delphi_platform_io_zone.id
  records = [
    tolist(aws_acm_certificate.delphiplatform_io_cert.domain_validation_options)[0].resource_record_value,
  ]
  ttl      = 60
  provider = aws.gdb-delphi-dev
}

resource "aws_acm_certificate_validation" "delphiplatform_io_cert" {
  certificate_arn = aws_acm_certificate.delphiplatform_io_cert.arn
  validation_record_fqdns = [
  aws_route53_record.delphiplatform_io_cert_validation.fqdn]
}
