//native
type Digitalocean = {
token: string;
};
/**
* Update the Database Configuration for an Existing Database
* To update the configuration for an existing database cluster, send a PATCH request to
`/v2/databases/$DATABASE_ID/config`.
*/
export async function main(
auth: Digitalocean,
database_cluster_uuid: string,
body: {
config?:
| {
backup_hour?: number;
backup_minute?: number;
sql_mode?: string;
connect_timeout?: number;
default_time_zone?: string;
group_concat_max_len?: number;
information_schema_stats_expiry?: number;
innodb_ft_min_token_size?: number;
innodb_ft_server_stopword_table?: string;
innodb_lock_wait_timeout?: number;
innodb_log_buffer_size?: number;
innodb_online_alter_log_max_size?: number;
innodb_print_all_deadlocks?: false | true;
innodb_rollback_on_timeout?: false | true;
interactive_timeout?: number;
internal_tmp_mem_storage_engine?: "TempTable" | "MEMORY";
net_read_timeout?: number;
net_write_timeout?: number;
sql_require_primary_key?: false | true;
wait_timeout?: number;
max_allowed_packet?: number;
max_heap_table_size?: number;
sort_buffer_size?: number;
tmp_table_size?: number;
slow_query_log?: false | true;
long_query_time?: number;
binlog_retention_period?: number;
innodb_change_buffer_max_size?: number;
innodb_flush_neighbors?: 0 | 1 | 2;
innodb_read_io_threads?: number;
innodb_write_io_threads?: number;
innodb_thread_concurrency?: number;
net_buffer_length?: number;
log_output?: "INSIGHTS" | "TABLE" | "INSIGHTS,TABLE" | "NONE";
}
| {
autovacuum_freeze_max_age?: number;
autovacuum_max_workers?: number;
autovacuum_naptime?: number;
autovacuum_vacuum_threshold?: number;
autovacuum_analyze_threshold?: number;
autovacuum_vacuum_scale_factor?: number;
autovacuum_analyze_scale_factor?: number;
autovacuum_vacuum_cost_delay?: number;
autovacuum_vacuum_cost_limit?: number;
backup_hour?: number;
backup_minute?: number;
bgwriter_delay?: number;
bgwriter_flush_after?: number;
bgwriter_lru_maxpages?: number;
bgwriter_lru_multiplier?: number;
deadlock_timeout?: number;
default_toast_compression?: "lz4" | "pglz";
idle_in_transaction_session_timeout?: number;
jit?: false | true;
log_autovacuum_min_duration?: number;
log_error_verbosity?: "TERSE" | "DEFAULT" | "VERBOSE";
log_line_prefix?:
| "pid=%p,user=%u,db=%d,app=%a,client=%h"
| "%m [%p] %q[user=%u,db=%d,app=%a]"
| "%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h";
log_min_duration_statement?: number;
max_files_per_process?: number;
max_prepared_transactions?: number;
max_pred_locks_per_transaction?: number;
max_locks_per_transaction?: number;
max_stack_depth?: number;
max_standby_archive_delay?: number;
max_standby_streaming_delay?: number;
max_replication_slots?: number;
max_logical_replication_workers?: number;
max_parallel_workers?: number;
max_parallel_workers_per_gather?: number;
max_worker_processes?: number;
"pg_partman_bgw.role"?: string;
"pg_partman_bgw.interval"?: number;
"pg_stat_statements.track"?: "all" | "top" | "none";
temp_file_limit?: number;
timezone?: string;
track_activity_query_size?: number;
track_commit_timestamp?: "off" | "on";
track_functions?: "all" | "none" | "pl";
track_io_timing?: "off" | "on";
max_wal_senders?: number;
wal_sender_timeout?: number;
wal_writer_delay?: number;
shared_buffers_percentage?: number;
pgbouncer?: {
server_reset_query_always?: false | true;
ignore_startup_parameters?: "extra_float_digits" | "search_path"[];
min_pool_size?: number;
server_lifetime?: number;
server_idle_timeout?: number;
autodb_pool_size?: number;
autodb_pool_mode?: "session" | "transaction" | "statement";
autodb_max_db_connections?: number;
autodb_idle_timeout?: number;
};
work_mem?: number;
timescaledb?: { max_background_workers?: number };
synchronous_replication?: "off" | "quorum";
stat_monitor_enable?: false | true;
max_failover_replication_time_lag?: number;
}
| {
redis_maxmemory_policy?:
| "noeviction"
| "allkeys_lru"
| "allkeys_random"
| "volatile_lru"
| "volatile_random"
| "volatile_ttl";
redis_pubsub_client_output_buffer_limit?: number;
redis_number_of_databases?: number;
redis_io_threads?: number;
redis_lfu_log_factor?: number;
redis_lfu_decay_time?: number;
redis_ssl?: false | true;
redis_timeout?: number;
redis_notify_keyspace_events?: string;
redis_persistence?: "off" | "rdb";
redis_acl_channels_default?: "allchannels" | "resetchannels";
}
| {
default_read_concern?: "local" | "available" | "majority";
default_write_concern?: string;
transaction_lifetime_limit_seconds?: number;
slow_op_threshold_ms?: number;
verbosity?: number;
}
| {
compression_type?:
| "lz4"
| "gzip"
| "snappy"
| "zstd"
| "uncompressed"
| "producer";
group_initial_rebalance_delay_ms?: number;
group_min_session_timeout_ms?: number;
group_max_session_timeout_ms?: number;
connections_max_idle_ms?: number;
max_incremental_fetch_session_cache_slots?: number;
message_max_bytes?: number;
offsets_retention_minutes?: number;
log_cleaner_delete_retention_ms?: number;
log_cleaner_min_cleanable_ratio?: number;
log_cleaner_max_compaction_lag_ms?: number;
log_cleaner_min_compaction_lag_ms?: number;
log_cleanup_policy?: "delete" | "compact" | "compact,delete";
log_flush_interval_messages?: number;
log_flush_interval_ms?: number;
log_index_interval_bytes?: number;
log_index_size_max_bytes?: number;
log_message_downconversion_enable?: false | true;
log_message_timestamp_type?: "CreateTime" | "LogAppendTime";
log_message_timestamp_difference_max_ms?: number;
log_preallocate?: false | true;
log_retention_bytes?: number;
log_retention_hours?: number;
log_retention_ms?: number;
log_roll_jitter_ms?: number;
log_roll_ms?: number;
log_segment_bytes?: number;
log_segment_delete_delay_ms?: number;
auto_create_topics_enable?: false | true;
min_insync_replicas?: number;
num_partitions?: number;
default_replication_factor?: number;
replica_fetch_max_bytes?: number;
replica_fetch_response_max_bytes?: number;
max_connections_per_ip?: number;
producer_purgatory_purge_interval_requests?: number;
socket_request_max_bytes?: number;
transaction_state_log_segment_bytes?: number;
transaction_remove_expired_transaction_cleanup_interval_ms?: number;
}
| {
http_max_content_length_bytes?: number;
http_max_header_size_bytes?: number;
http_max_initial_line_length_bytes?: number;
indices_query_bool_max_clause_count?: number;
indices_fielddata_cache_size_percentage?: number;
indices_memory_index_buffer_size_percentage?: number;
indices_memory_min_index_buffer_size_mb?: number;
indices_memory_max_index_buffer_size_mb?: number;
indices_queries_cache_size_percentage?: number;
indices_recovery_max_mb_per_sec?: number;
indices_recovery_max_concurrent_file_chunks?: number;
thread_pool_search_size?: number;
thread_pool_search_throttled_size?: number;
thread_pool_get_size?: number;
thread_pool_analyze_size?: number;
thread_pool_write_size?: number;
thread_pool_force_merge_size?: number;
thread_pool_search_queue_size?: number;
thread_pool_search_throttled_queue_size?: number;
thread_pool_get_queue_size?: number;
thread_pool_analyze_queue_size?: number;
thread_pool_write_queue_size?: number;
ism_enabled?: false | true;
ism_history_enabled?: false | true;
ism_history_max_age_hours?: number;
ism_history_max_docs?: number;
ism_history_rollover_check_period_hours?: number;
ism_history_rollover_retention_period_days?: number;
search_max_buckets?: number;
action_auto_create_index_enabled?: false | true;
enable_security_audit?: false | true;
action_destructive_requires_name?: false | true;
cluster_max_shards_per_node?: number;
override_main_response_version?: false | true;
script_max_compilations_rate?: string;
cluster_routing_allocation_node_concurrent_recoveries?: number;
reindex_remote_whitelist?: string[];
plugins_alerting_filter_by_backend_roles_enabled?: false | true;
};
},
) {
const url = new URL(
`https://api.digitalocean.com/v2/databases/${database_cluster_uuid}/config`,
);
const response = await fetch(url, {
method: "PATCH",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 537 days ago