use lombok::{Builder, Getter, Setter}; #[derive( Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq, Getter, Setter, Builder, )] #[serde(default)] pub struct AppDatabaseSettings { pub primary: AppDatabaseConnConfig, pub replicas: Vec, pub max_connections_total: u32, pub query_timeout: u64, pub auto_migrate: bool, pub sqlx_logging: bool, pub slow_query_threshold_ms: u64, } #[derive( Debug, serde::Deserialize, serde::Serialize, Clone, PartialEq, Eq, Getter, Setter, Builder, )] #[serde(default)] pub struct AppDatabaseConnConfig { pub url: String, pub max_connections: u32, pub min_connections: u32, pub max_lifetime: Option, pub idle_timeout: Option, pub acquire_timeout: Option, pub schema: Option, pub application_name: Option, } impl Default for AppDatabaseSettings { fn default() -> Self { Self { primary: AppDatabaseConnConfig::default(), replicas: vec![], max_connections_total: 100, query_timeout: 30, auto_migrate: true, sqlx_logging: false, slow_query_threshold_ms: 500, } } } impl Default for AppDatabaseConnConfig { fn default() -> Self { Self { url: String::new(), max_connections: 20, min_connections: 2, max_lifetime: Some(1800), idle_timeout: Some(600), acquire_timeout: Some(5), schema: None, application_name: Some("gitdataai".to_string()), } } }