1use serde::{Deserialize, Serialize};
2use soph_config::support::default;
3
4#[derive(Clone, Debug, Deserialize, Serialize)]
5pub struct Redis {
6 #[serde(default = "default_url")]
7 pub url: String,
8
9 #[serde(default = "default_max_size")]
10 pub max_size: u32,
11
12 #[serde(default = "default_min_idle")]
13 pub min_idle: u32,
14
15 #[serde(default = "default_test_on_check_out")]
16 pub test_on_check_out: bool,
17
18 #[serde(default = "default_max_lifetime")]
19 pub max_lifetime: u64,
20
21 #[serde(default = "default_idle_timeout")]
22 pub idle_timeout: u64,
23
24 #[serde(default = "default_connection_timeout")]
25 pub connection_timeout: u64,
26
27 #[serde(default = "default_retry_connection")]
28 pub retry_connection: bool,
29
30 #[serde(default = "default_reaper_rate")]
31 pub reaper_rate: u64,
32}
33
34fn default_url() -> String {
35 "redis://localhost".to_string()
36}
37
38impl Default for Redis {
39 fn default() -> Self {
40 default::<Self>().expect("Failed to get default value")
41 }
42}
43
44fn default_max_size() -> u32 {
45 10
46}
47fn default_min_idle() -> u32 {
48 1
49}
50
51fn default_test_on_check_out() -> bool {
52 true
53}
54
55fn default_max_lifetime() -> u64 {
56 30 * 60 * 1000
57}
58
59fn default_idle_timeout() -> u64 {
60 10 * 60 * 1000
61}
62
63fn default_connection_timeout() -> u64 {
64 3 * 1000
65}
66
67fn default_retry_connection() -> bool {
68 true
69}
70
71fn default_reaper_rate() -> u64 {
72 30 * 1000
73}