module "default_tags" {
  source             = "git@github.com:theorchard/terraform-default-tags.git//?ref=1.0.0"
  environment        = var.environment
  application_family = var.application_family
}

provider "aws" {
  region = var.aws_region

  default_tags {
    tags = module.default_tags.tags
  }
}

terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/dns/theorchard.com/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "aws_vpc" "main" {
  tags = {
    Name = "prod"
  }
}

resource "aws_route53_zone" "main" {
  # checkov:skip=CKV2_AWS_38: Not applicable to private zones
  # checkov:skip=CKV2_AWS_39: Not applicable to private zones
  name = var.route53_zone_name

  vpc {
    vpc_id = data.aws_vpc.main.id
  }

  tags = {
    Name        = var.route53_zone_name
    Description = "R53 zone for ${var.route53_zone_name}"
  }
}

resource "aws_route53_record" "A_records" {
  # checkov:skip=CKV2_AWS_23:Avoid Error: Route53 A Record does not have Attached Resource
  for_each = var.a_records
  zone_id  = aws_route53_zone.main.zone_id
  name     = each.key
  type     = "A"
  ttl      = 300
  records  = each.value.records
}

resource "aws_route53_record" "cname_records" {
  for_each = var.cname_records
  zone_id  = aws_route53_zone.main.zone_id
  name     = each.key
  type     = "CNAME"
  ttl      = 300
  records  = each.value.records
}

resource "aws_route53_record" "mx_records" {
  for_each = var.mx_records
  zone_id  = aws_route53_zone.main.zone_id
  name     = each.key
  type     = "MX"
  ttl      = 300
  records  = each.value.records
}
