use serde::{Deserialize, Serialize};
use soph_config::support::default;
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Redis {
#[serde(default = "default_url")]
pub url: String,
#[serde(default = "default_max_size")]
pub max_size: u32,
#[serde(default = "default_min_idle")]
pub min_idle: u32,
#[serde(default = "default_test_on_check_out")]
pub test_on_check_out: bool,
#[serde(default = "default_max_lifetime")]
pub max_lifetime: u64,
#[serde(default = "default_idle_timeout")]
pub idle_timeout: u64,
#[serde(default = "default_connection_timeout")]
pub connection_timeout: u64,
#[serde(default = "default_retry_connection")]
pub retry_connection: bool,
#[serde(default = "default_reaper_rate")]
pub reaper_rate: u64,
}
fn default_url() -> String {
"redis://localhost".to_string()
}
impl Default for Redis {
fn default() -> Self {
default::<Self>().expect("Failed to get default value")
}
}
fn default_max_size() -> u32 {
10
}
fn default_min_idle() -> u32 {
1
}
fn default_test_on_check_out() -> bool {
true
}
fn default_max_lifetime() -> u64 {
30 * 60 * 1000
}
fn default_idle_timeout() -> u64 {
10 * 60 * 1000
}
fn default_connection_timeout() -> u64 {
3 * 1000
}
fn default_retry_connection() -> bool {
true
}
fn default_reaper_rate() -> u64 {
30 * 1000
}