resource "aws_db_parameter_group" "mc-rds-prod-db-01-config-pg14" {
  name        = "mc-rds-prod-db-01-config-pg14"
  family      = "postgres14"
  description = "Postgres 14.6 parameters for mc-rds-prod-db-01 & mc-rds-prod-db-02"

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

  parameter {
    apply_method = "immediate"
    name         = "autovacuum_analyze_scale_factor"
    value        = "0.1"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_min_duration_statement"
    value        = "180000"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_min_error_statement"
    value        = "error"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_min_messages"
    value        = "info"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_rotation_age"
    value        = "1440"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_rotation_size"
    value        = "0"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_statement"
    value        = "ddl"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_connections"
    value        = "2500"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_files_per_process"
    value        = "1000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_pred_locks_per_transaction"
    value        = "64"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_prepared_transactions"
    value        = "2500"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.logical_replication"
    value        = "1"
  }

  parameter {
    apply_method = "immediate"
    name         = "rds.log_retention_period"
    value        = "10080"
  }

  parameter {
    apply_method = "immediate"
    name         = "search_path"
    value        = "\"$user\",public,conversion"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "track_activity_query_size"
    value        = "102400"
  }

  parameter {
    apply_method = "immediate"
    name         = "wal_sender_timeout"
    value        = "0"
  }

  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_count"
    value        = "10"
  }

  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_idle"
    value        = "60"
  }

  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_interval"
    value        = "10"
  }

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_db_parameter_group" "mc-rds-prod-db-01-config-pg17" {
  name        = "mc-rds-prod-db-01-config-pg17"
  family      = "postgres17"
  description = "Postgres 17 parameters for mc-rds-prod-db-01 & mc-rds-prod-db-02"

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

  parameter {
    apply_method = "immediate"
    name         = "autovacuum_analyze_scale_factor"
    value        = "0.1"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_min_duration_statement"
    value        = "180000"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_min_error_statement"
    value        = "error"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_min_messages"
    value        = "info"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_rotation_age"
    value        = "1440"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_rotation_size"
    value        = "0"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_statement"
    value        = "ddl"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_connections"
    value        = "2500"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_files_per_process"
    value        = "1000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_pred_locks_per_transaction"
    value        = "64"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_prepared_transactions"
    value        = "2500"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.logical_replication"
    value        = "1"
  }

  parameter {
    apply_method = "immediate"
    name         = "rds.log_retention_period"
    value        = "10080"
  }

  parameter {
    apply_method = "immediate"
    name         = "search_path"
    value        = "\"$user\",public,conversion"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "track_activity_query_size"
    value        = "102400"
  }

  parameter {
    apply_method = "immediate"
    name         = "wal_sender_timeout"
    value        = "0"
  }

  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_count"
    value        = "10"
  }

  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_idle"
    value        = "60"
  }

  parameter {
    apply_method = "immediate"
    name         = "tcp_keepalives_interval"
    value        = "10"
  }

  lifecycle {
    create_before_destroy = true
  }
}

