server_config/
database.rs1use std::time::Duration;
2
3use serde::Deserialize;
4
5#[derive(Debug, Deserialize, Clone)]
6pub struct DatabaseConfig {
7 pub url: String,
8 #[serde(default = "default_max_connections")]
9 pub max_connections: u32,
10 #[serde(default = "default_min_connections")]
11 pub min_connections: u32,
12 #[serde(default = "default_connect_timeout_secs")]
13 pub connect_timeout: u64,
14 #[serde(default = "default_idle_timeout_secs")]
15 pub idle_timeout: Option<u64>,
16 #[serde(default = "default_max_lifetime_secs")]
17 pub max_lifetime: Option<u64>,
18}
19
20fn default_max_connections() -> u32 {
21 10
22}
23fn default_min_connections() -> u32 {
24 0
25} fn default_connect_timeout_secs() -> u64 {
27 5
28}
29fn default_idle_timeout_secs() -> Option<u64> {
30 Some(600)
31} fn default_max_lifetime_secs() -> Option<u64> {
33 Some(1800)
34} impl DatabaseConfig {
37 pub fn connect_timeout_duration(&self) -> Duration {
39 Duration::from_secs(self.connect_timeout)
40 }
41
42 pub fn idle_timeout_duration(&self) -> Option<Duration> {
43 self.idle_timeout.map(Duration::from_secs)
44 }
45
46 pub fn max_lifetime_duration(&self) -> Option<Duration> {
47 self.max_lifetime.map(Duration::from_secs)
48 }
49}