data "aws_db_subnet_group" "subnet_group" {
  name = "qa-youtube-audit-private-db-subnets"
}

resource "aws_rds_cluster_parameter_group" "cluster_parameter_group" {
  name   = "${var.environment}-${var.application_family}-aurora-mysql80"
  family = "aurora-mysql8.0"

  parameter {
    name         = "binlog_format"
    value        = "ROW"
    apply_method = "pending-reboot"
  }

  parameter {
    name         = "gtid-mode"
    value        = "ON"
    apply_method = "pending-reboot"
  }

  parameter {
    name         = "enforce_gtid_consistency"
    value        = "ON"
    apply_method = "pending-reboot"
  }

  parameter {
    name         = "slow_query_log"
    value        = "1"
    apply_method = "immediate"
  }

  parameter {
    name         = "long_query_time"
    value        = "30"
    apply_method = "immediate"
  }
}

resource "aws_db_parameter_group" "db_parameter_group" {
  name   = "${var.environment}-${var.application_family}-mysql80"
  family = "aurora-mysql8.0"
}

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

  providers = {
    aws.dns = aws
  }

  environment                               = var.environment
  service_name                              = var.service_name
  application_family                        = var.application_family
  vpc_id                                    = module.vpc_info.vpc_id
  override_route53_zone_id                  = data.aws_route53_zone.zone.zone_id
  enabled_cloudwatch_logs_exports           = ["audit", "error", "general", "slowquery"]
  rds_db_subnet_group_name                  = data.aws_db_subnet_group.subnet_group.name
  rds_engine_version                        = "8.0"
  rds_cluster_instance_class                = "db.r7g.large"
  rds_cluster_instance_count                = "1"
  rds_master_username                       = "dummy"
  rds_master_password                       = "dummypassword"
  rds_availability_zones                    = ["us-east-1a", "us-east-1c"]
  rds_db_cluster_parameter_group_name       = aws_rds_cluster_parameter_group.cluster_parameter_group.name
  rds_cluster_instance_parameter_group_name = aws_db_parameter_group.db_parameter_group.name
  custom_kms_key_enabled                    = false
  rds_ingress_security_groups = flatten([
    [for service in module.services_info : service.security_groups],
  ])
}
