data "aws_db_instance" "primary" {
  provider = aws.us-east-1
  db_instance_identifier = local.workspace["rds_instance_name"]
}


module "rds" {
  source  = "terraform-aws-modules/rds/aws"
  version = "~> 2.35.0"

  identifier = local.workspace["rds_instance_name"]
  engine = "mysql"
  engine_version = data.aws_db_instance.primary.engine_version
  auto_minor_version_upgrade = false
  storage_encrypted = true
  deletion_protection = true
  instance_class = local.workspace["rds_instance_class"]
  allocated_storage = local.workspace["rds_disk_size"]
  major_engine_version = local.workspace["rds_engine_version"]
  family = local.workspace["rds_engine_family"]
  create_db_parameter_group = "true"
  storage_type = local.workspace["rds_storage_type"]
  iops = local.workspace["rds_iops"]


  name = "Customer"
  username = "customer"
  password = random_string.rds_password.result
  port = "3306"
  vpc_security_group_ids = [
    data.terraform_remote_state.mop_core.outputs.sg_mysql_id,
    aws_security_group.customer_management_service_mysql.id
  ]
  subnet_ids = data.terraform_remote_state.mop_core.outputs.vpc_subnet_private_ids
  maintenance_window = "Mon:00:00-Mon:03:00"
  backup_window = "03:00-06:00"
  backup_retention_period = local.workspace["db_backup_retention_period"]
  replicate_source_db = local.replicate_source_db

  create_db_option_group = false
  parameter_group_description = "Database parameter group for ${local.workspace["rds_instance_name"]}"
  db_subnet_group_description = "Database subnet group for ${local.workspace["rds_instance_name"]}"

  parameters = [
    {
      name = "character_set_client"
      value = "utf8mb4"
    },
    {
      name = "character_set_server"
      value = "utf8mb4"
    },
    {
      name = "skip_name_resolve"
      value = "1"
    }
  ]
  tags = {
    nf_node_type      = "MOP"
    nf_environment    = local.workspace["deploy_env_name"]
    cost_environment  = local.workspace["deploy_env_name"] == "production" ? "production" : "non-production"
    cost_category     = "MOPINT"
    cost_team_owner   = "MOPPLT"
  }
}
