cdk_mintd/env_vars/
database.rs1use std::env;
4
5use crate::config::{PostgresAuthConfig, PostgresConfig};
6
7pub const ENV_POSTGRES_URL: &str = "CDK_MINTD_POSTGRES_URL";
8pub const ENV_POSTGRES_TLS_MODE: &str = "CDK_MINTD_POSTGRES_TLS_MODE";
9pub const ENV_POSTGRES_MAX_CONNECTIONS: &str = "CDK_MINTD_POSTGRES_MAX_CONNECTIONS";
10pub const ENV_POSTGRES_CONNECTION_TIMEOUT: &str = "CDK_MINTD_POSTGRES_CONNECTION_TIMEOUT_SECONDS";
11
12pub const ENV_AUTH_POSTGRES_URL: &str = "CDK_MINTD_AUTH_POSTGRES_URL";
13pub const ENV_AUTH_POSTGRES_TLS_MODE: &str = "CDK_MINTD_AUTH_POSTGRES_TLS_MODE";
14pub const ENV_AUTH_POSTGRES_MAX_CONNECTIONS: &str = "CDK_MINTD_AUTH_POSTGRES_MAX_CONNECTIONS";
15pub const ENV_AUTH_POSTGRES_CONNECTION_TIMEOUT: &str =
16 "CDK_MINTD_AUTH_POSTGRES_CONNECTION_TIMEOUT_SECONDS";
17
18impl PostgresConfig {
19 pub fn from_env(mut self) -> Self {
20 if let Ok(url) = env::var(ENV_POSTGRES_URL) {
22 self.url = url;
23 } else if let Ok(url) = env::var(super::DATABASE_URL_ENV_VAR) {
24 self.url = url;
26 }
27
28 if let Ok(tls_mode) = env::var(ENV_POSTGRES_TLS_MODE) {
29 self.tls_mode = Some(tls_mode);
30 }
31
32 if let Ok(max_connections) = env::var(ENV_POSTGRES_MAX_CONNECTIONS) {
33 if let Ok(parsed) = max_connections.parse::<usize>() {
34 self.max_connections = Some(parsed);
35 }
36 }
37
38 if let Ok(timeout) = env::var(ENV_POSTGRES_CONNECTION_TIMEOUT) {
39 if let Ok(parsed) = timeout.parse::<u64>() {
40 self.connection_timeout_seconds = Some(parsed);
41 }
42 }
43
44 self
45 }
46}
47
48impl PostgresAuthConfig {
49 pub fn from_env(mut self) -> Self {
50 if let Ok(url) = env::var(ENV_AUTH_POSTGRES_URL) {
51 self.url = url;
52 }
53
54 if let Ok(tls_mode) = env::var(ENV_AUTH_POSTGRES_TLS_MODE) {
55 self.tls_mode = Some(tls_mode);
56 }
57
58 if let Ok(max_connections) = env::var(ENV_AUTH_POSTGRES_MAX_CONNECTIONS) {
59 if let Ok(parsed) = max_connections.parse::<usize>() {
60 self.max_connections = Some(parsed);
61 }
62 }
63
64 if let Ok(timeout) = env::var(ENV_AUTH_POSTGRES_CONNECTION_TIMEOUT) {
65 if let Ok(parsed) = timeout.parse::<u64>() {
66 self.connection_timeout_seconds = Some(parsed);
67 }
68 }
69
70 self
71 }
72}