cat_gateway/settings/
event_db.rs1use super::str_env_var::StringEnvVar;
4
5const EVENT_DB_MAX_CONNECTIONS: u32 = 100;
8
9const EVENT_DB_MAX_LIFETIME: u32 = 30;
12
13const EVENT_DB_MIN_IDLE: u32 = 0;
16
17const EVENT_DB_CONN_TIMEOUT: u32 = 300;
20
21const EVENT_DB_URL_DEFAULT: &str =
23 "postgresql://postgres:postgres@localhost/catalyst_events?sslmode=disable";
24
25#[derive(Clone)]
27pub(crate) struct EnvVars {
28 pub(crate) url: StringEnvVar,
30
31 pub(crate) username: Option<StringEnvVar>,
33
34 pub(crate) password: Option<StringEnvVar>,
36
37 pub(crate) max_connections: u32,
40
41 pub(crate) max_lifetime: u32,
44
45 pub(crate) min_idle: u32,
48
49 pub(crate) connection_timeout: u32,
52}
53
54impl EnvVars {
55 pub(super) fn new() -> Self {
57 Self {
58 url: StringEnvVar::new("EVENT_DB_URL", (EVENT_DB_URL_DEFAULT, true).into()),
59 username: StringEnvVar::new_optional("EVENT_DB_USERNAME", false),
60 password: StringEnvVar::new_optional("EVENT_DB_PASSWORD", true),
61 max_connections: StringEnvVar::new_as_int(
62 "EVENT_DB_MAX_CONNECTIONS",
63 EVENT_DB_MAX_CONNECTIONS,
64 0,
65 u32::MAX,
66 ),
67 max_lifetime: StringEnvVar::new_as_int(
68 "EVENT_DB_MAX_LIFETIME",
69 EVENT_DB_MAX_LIFETIME,
70 0,
71 u32::MAX,
72 ),
73 min_idle: StringEnvVar::new_as_int("EVENT_DB_MIN_IDLE", EVENT_DB_MIN_IDLE, 0, u32::MAX),
74 connection_timeout: StringEnvVar::new_as_int(
75 "EVENT_DB_CONN_TIMEOUT",
76 EVENT_DB_CONN_TIMEOUT,
77 0,
78 u32::MAX,
79 ),
80 }
81 }
82}