resource "aws_db_parameter_group" "aoma-rds-stage-config-v15" {
  name        = "aoma-rds-stage-config-v15"
  family      = "postgres15"
  description = "Custom Postgresql 15 parameters for aoma-rds-stage instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "application_name"
    value        = "aoma"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_analyze"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_min_duration"
    value        = "10000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_verbose"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "effective_io_concurrency"
    value        = "10"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "idle_in_transaction_session_timeout"
    value        = "604800000"
  }

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

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

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

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

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

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

  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_parallel_workers"
    value        = "15"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_parallel_workers_per_gather"
    value        = "5"
  }

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "max_worker_processes"
    value        = "20"
  }

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

  parameter {
    apply_method = "immediate"
    name         = "password_encryption"
    value        = "md5"
  }

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

  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,oracle,aoma,amp,amp_search,conversion,metadata_publisher,mmb,ordertracking,reports,towner,audit,message_bridge,ust"
  }

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

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "work_mem"
    value        = "32000"
  }

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

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_db_parameter_group" "ameba-rds-stage-config-v15" {
  name        = "ameba-rds-stage-config-v15"
  family      = "postgres15"
  description = "Custom Postgresql 15 parameters for ameba-rds-stage instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "application_name"
    value        = "ameba"
  }

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

  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 = "immediate"
    name         = "password_encryption"
    value        = "md5"
  }

  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,oracle,ameba"
  }


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

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

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

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_db_parameter_group" "aoma-rds-stage-config-v17" {
  name        = "aoma-rds-stage-config-v17"
  family      = "postgres17"
  description = "Custom Postgresql 17 parameters for aoma-rds-stage instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "application_name"
    value        = "aoma"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_analyze"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_verbose"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "effective_io_concurrency"
    value        = "10"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "idle_in_transaction_session_timeout"
    value        = "604800000"
  }

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

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

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

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

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

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

  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_parallel_workers"
    value        = "15"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_parallel_workers_per_gather"
    value        = "5"
  }

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "max_worker_processes"
    value        = "20"
  }

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

  parameter {
    apply_method = "immediate"
    name         = "password_encryption"
    value        = "md5"
  }

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

  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,oracle,aoma,amp,amp_search,conversion,metadata_publisher,mmb,ordertracking,reports,towner,audit,message_bridge,ust"
  }

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

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "work_mem"
    value        = "32000"
  }

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

  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_buffers"
    value        = "1"
  }

  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_format"
    value        = "json"
  }

  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_min_duration"
    value        = "1000"
  }

  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_nested_statements"
    value        = "1"
  }

  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_timing"
    value        = "0"
  }

  parameter {
    apply_method = "immediate"
    name         = "auto_explain.log_triggers"
    value        = "1"
  }

  parameter {
    apply_method = "immediate"
    name         = "auto_explain.sample_rate"
    value        = "1"
  }

  parameter {
    apply_method = "immediate"
    name         = "log_line_prefix"
    value        = "%m:%r:%u@%d:[%p]:%l:%e:%s:%v:%x:%c:%q%a:"
  }

  parameter {
    apply_method = "immediate"
    name         = "pg_stat_statements.track"
    value        = "ALL"
  }

  parameter {
    apply_method = "immediate"
    name         = "pg_stat_statements.track_utility"
    value        = "0"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "shared_preload_libraries"
    value        = "pg_stat_statements,pg_tle,auto_explain"
  }

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_db_parameter_group" "ameba-rds-stage-config-v17" {
  name        = "ameba-rds-stage-config-v17"
  family      = "postgres17"
  description = "Custom Postgresql 17 parameters for ameba-rds-stage instance"

  parameter {
    apply_method = "pending-reboot"
    name         = "application_name"
    value        = "ameba"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_analyze"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_min_duration"
    value        = "10000"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "auto_explain.log_verbose"
    value        = "1"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "effective_io_concurrency"
    value        = "10"
  }

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

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

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

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

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

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

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

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

  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_parallel_workers"
    value        = "15"
  }

  parameter {
    apply_method = "pending-reboot"
    name         = "max_parallel_workers_per_gather"
    value        = "5"
  }

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "max_worker_processes"
    value        = "20"
  }

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

  parameter {
    apply_method = "pending-reboot"
    name         = "password_encryption"
    value        = "md5"
  }

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

  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,oracle,ameba,auth,amp"
  }

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

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

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

  parameter {
    apply_method = "pending-reboot"
    name         = "work_mem"
    value        = "32000"
  }

  lifecycle {
    create_before_destroy = true
  }
}