data "aws_ec2_managed_prefix_list" "ny_vpn_prefix_list" {
  name = "vpn-ny"
}

data "aws_ec2_managed_prefix_list" "ny_vpn_users_prefix_list" {
  name = "vpn-ny-users"
}

data "aws_ec2_managed_prefix_list" "sme_prefix_list" {
  name = "vpn-sme-internal-primary"
}

module "prs_toolkit_rds" {
  source = "git@github.com:theorchard/terraform-rds.git//?ref=6.6.0"

  providers = {
    aws.dns = aws.networking
  }

  environment        = var.environment
  service_name       = var.service_name
  application_family = var.application_family

  rds_master_username = "prs_admin"
  rds_master_password = "s0mePass!changme"

  rds_cluster_instance_class                = "db.t4g.medium"
  rds_cluster_instance_count                = "1"
  rds_db_cluster_parameter_group_name       = aws_rds_cluster_parameter_group.prs_toolkit_mysql8_cluster_parameter_group.name
  rds_cluster_instance_parameter_group_name = "default.aurora-mysql8.0"
  rds_engine                                = "aurora-mysql"
  rds_engine_version                        = "8.0"
  rds_db_subnet_group_name                  = "prod-orchard-private-subnet-group"
  rds_availability_zones                    = ["us-east-1a", "us-east-1c"]
  enabled_cloudwatch_logs_exports           = ["audit", "error", "general"]
  custom_kms_key_enabled                    = true
  snapshot_identifier                       = "${var.environment}-research-collections-0-cluster-encryption"
  vpc_id                                    = module.vpc_info.vpc_id
  route53_zone_id                           = data.aws_route53_zone.theorchard_io.zone_id

  rds_ingress_prefix_list_names = [
    data.aws_ec2_managed_prefix_list.ny_vpn_prefix_list.name,
    data.aws_ec2_managed_prefix_list.sme_prefix_list.name,
    data.aws_ec2_managed_prefix_list.ny_vpn_users_prefix_list.name
  ]
}

# Create Route53 vanity cname
resource "aws_route53_record" "rds_cluster_cname" {
  zone_id = data.aws_route53_zone.theorchard_com.zone_id
  name    = "${var.environment}-research-collections"
  type    = "CNAME"
  ttl     = "60"
  records = [module.prs_toolkit_rds.aws_route53_record_rds_cluster_cname]
}

# Create a Cloudflare vanity cname to resolve from SME VM
resource "cloudflare_record" "research_collections_vanity_cloudflare_record" {
  zone_id = data.cloudflare_zone.cloudflare_cloudflare_zone.id
  name    = "${var.environment}-research-collections"
  type    = "CNAME"
  ttl     = 60
  content = module.prs_toolkit_rds.aws_route53_record_rds_cluster_cname
}
