resource "aws_db_parameter_group" "del-rds-prod-config-pg16" {
  name        = "del-rds-prod-config-pg16"
  family      = "postgres16"
  description = "Custom PostgreSQL 16 parameters for del-rds-prod instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum_naptime"
    value        = "30"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "checkpoint_timeout"
    value        = "1800"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_duration_statement"
    value        = "60000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_error_statement"
    value        = "error"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_messages"
    value        = "warning"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_age"
    value        = "1440"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_size"
    value        = "0"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_statement"
    value        = "ddl"
  }

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "orafce.timezone"
    value        = "US/Eastern"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "pg_stat_statements.max"
    value        = "10000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "pg_stat_statements.track"
    value        = "ALL"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "pg_stat_statements.track_utility"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.force_autovacuum_logging_level"
    value        = "info"
  }

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

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.log_retention_period"
    value        = "10080"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "search_path"
    value        = "\"$user\",public,delivery_service,delivery_archive"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "timezone"
    value        = "US/Eastern"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "track_activities"
    value        = "1"
  }

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

  parameter {
    apply_method = "pending-reboot"
    name         = "track_commit_timestamp"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "track_functions"
    value        = "all"
  }

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_db_parameter_group" "mlib-prod-pg16" {
  name        = "mlib-prod-pg16"
  family      = "postgres16"
  description = "Custom PostgreSQL 16 parameters for mlib-prod instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum_naptime"
    value        = "30"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_lock_waits"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_duration_statement"
    value        = "60000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_messages"
    value        = "info"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_age"
    value        = "1440"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_size"
    value        = "0"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_statement"
    value        = "ddl"
  }

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "orafce.timezone"
    value        = "US/Eastern"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.log_retention_period"
    value        = "10080"
  }

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

  parameter {
    apply_method = "pending-reboot"
    name         = "search_path"
    value        = "\"$user\",public,oracle,media_library"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "timezone"
    value        = "US/Eastern"
  }

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

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_db_parameter_group" "del-rds-prod-config-pg18" {
  name        = "del-rds-prod-config-pg18"
  family      = "postgres18"
  description = "Custom PostgreSQL 18 parameters for del-rds-prod instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum_naptime"
    value        = "30"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "checkpoint_timeout"
    value        = "1800"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_duration_statement"
    value        = "60000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_error_statement"
    value        = "error"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_messages"
    value        = "warning"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_age"
    value        = "1440"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_size"
    value        = "0"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_statement"
    value        = "ddl"
  }

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "orafce.timezone"
    value        = "US/Eastern"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "pg_stat_statements.max"
    value        = "10000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "pg_stat_statements.track"
    value        = "ALL"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "pg_stat_statements.track_utility"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.force_autovacuum_logging_level"
    value        = "info"
  }

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

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.log_retention_period"
    value        = "10080"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "search_path"
    value        = "\"$user\",public,delivery_service,delivery_archive"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "timezone"
    value        = "US/Eastern"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "track_activities"
    value        = "1"
  }

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

  parameter {
    apply_method = "pending-reboot"
    name         = "track_commit_timestamp"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "track_functions"
    value        = "all"
  }

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_db_parameter_group" "mlib-prod-pg18" {
  name        = "mlib-prod-pg18"
  family      = "postgres18"
  description = "Custom PostgreSQL 18 parameters for mlib-prod instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "autovacuum_naptime"
    value        = "30"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_lock_waits"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_duration_statement"
    value        = "60000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_min_messages"
    value        = "info"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_age"
    value        = "1440"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_rotation_size"
    value        = "0"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "log_statement"
    value        = "ddl"
  }

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "orafce.timezone"
    value        = "US/Eastern"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "rds.log_retention_period"
    value        = "10080"
  }

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

  parameter {
    apply_method = "pending-reboot"
    name         = "search_path"
    value        = "\"$user\",public,oracle,media_library"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "timezone"
    value        = "US/Eastern"
  }

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

  lifecycle {
    create_before_destroy = true
  }
}
