# Create subnet group for PostgreSQL in RDS
resource "aws_db_subnet_group" "main" {
  name       = "${local.name_prefix}-private-subnet-group"
  subnet_ids = data.aws_subnets.private_subnets.ids
  tags       = local.sentry_tags
}

resource "random_password" "sentry_master_password" {
  length           = 24
  special          = true
  override_special = "!#$%&*-_=+[]{}<>:?"
}

resource "aws_db_instance" "sentry_db" {
  allocated_storage       = 199
  storage_type            = "gp2"
  engine_version          = "10.18"
  instance_class          = "db.t3.small"
  identifier              = "${local.name_prefix}-sentry-db"
  apply_immediately       = true
  db_subnet_group_name    = aws_db_subnet_group.main.id
  vpc_security_group_ids  = [aws_security_group.sg_postgres.id]
  publicly_accessible     = false
  copy_tags_to_snapshot   = true
  backup_retention_period = 7
  skip_final_snapshot     = true
  deletion_protection     = true
  kms_key_id              = data.aws_kms_alias.default_rds.target_key_arn
  storage_encrypted       = true
  snapshot_identifier     = "arn:aws:rds:us-east-1:483193324480:snapshot:dev-infra-sentry-db-enc-final-snapshot"

  lifecycle {
    ignore_changes = [password, engine_version]
  }

  tags = local.sentry_tags
}
