use genies_derive::ConfigCore;
#[derive(ConfigCore,Debug,serde::Deserialize)]
pub struct ApplicationConfig {
pub debug: bool,
pub server_name:String,
pub servlet_path: String,
pub server_url: String,
pub gateway: Option<String>,
pub redis_url: String,
pub redis_save_url: String,
pub database_url: String,
pub max_connections: u32,
pub min_connections: u32,
pub wait_timeout: u64,
pub create_timeout: u64,
pub max_lifetime: u64,
pub log_level: String,
pub white_list_api: Vec<String>,
pub cache_type: String,
#[serde(default)]
pub keycloak_auth_server_url: Option<String>,
#[serde(default)]
pub keycloak_realm: Option<String>,
#[serde(default)]
pub keycloak_resource: Option<String>,
#[serde(default)]
pub keycloak_credentials_secret: Option<String>,
#[serde(default = "default_auth_mode")]
pub auth_mode: String,
#[serde(default)]
pub jwt_secret: String,
#[serde(default)]
pub auth_admin_url: String,
pub dapr_pubsub_name: String,
pub dapr_pub_message_limit: i64,
pub dapr_cdc_message_period: i64,
#[serde(default)]
pub processing_expire_seconds: i64,
#[serde(default)]
pub record_reserve_minutes: i64,
pub machine_id: Option<i64>,
#[serde(default = "default_heartbeat_interval")]
pub heartbeat_interval: u64,
}
fn default_heartbeat_interval() -> u64 { 30 }
fn default_auth_mode() -> String {
"keycloak".to_string()
}