refactor: simplify environment variable loading with helper function and remove unused mail configuration
This commit is contained in:
@@ -18,8 +18,3 @@ MINIO_ENDPOINT=http://localhost:9000
|
|||||||
MINIO_BUCKET_NAME=default_bucket
|
MINIO_BUCKET_NAME=default_bucket
|
||||||
MINIO_ACCESS_KEY=your-minio-access-key
|
MINIO_ACCESS_KEY=your-minio-access-key
|
||||||
MINIO_SECRET_KEY=your-minio-secret-key
|
MINIO_SECRET_KEY=your-minio-secret-key
|
||||||
MAIL_USER=your-email@example.com
|
|
||||||
MAIL_PASSWORD=your-smtp-password
|
|
||||||
MAIL_HOST=smtp.gmail.com
|
|
||||||
MAIL_PORT=465
|
|
||||||
MAIL_SECURE=true
|
|
||||||
|
|||||||
@@ -29,6 +29,17 @@ pub struct Env {
|
|||||||
pub minio_secret_key: String,
|
pub minio_secret_key: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Helper to get env var with warning if not set.
|
||||||
|
fn get_env_with_warning(key: &str, default: &str) -> String {
|
||||||
|
match env::var(key) {
|
||||||
|
Ok(val) => val,
|
||||||
|
Err(_) => {
|
||||||
|
warn!("Environment variable '{}' is not set. Using default: '{}'", key, default);
|
||||||
|
default.to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Loads environment variables from .env and system, only once.
|
/// Loads environment variables from .env and system, only once.
|
||||||
pub static ENV: Lazy<Env> = Lazy::new(|| {
|
pub static ENV: Lazy<Env> = Lazy::new(|| {
|
||||||
// Try to load .env file, log a warning if not found, proceed regardless.
|
// Try to load .env file, log a warning if not found, proceed regardless.
|
||||||
@@ -41,164 +52,27 @@ pub static ENV: Lazy<Env> = Lazy::new(|| {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Env {
|
Env {
|
||||||
port: match env::var("PORT") {
|
port: get_env_with_warning("PORT", "3000")
|
||||||
Ok(val) => val.parse().unwrap_or(3000),
|
.parse()
|
||||||
Err(_) => {
|
.unwrap_or(3000),
|
||||||
warn!("Environment variable PORT not set, using default 3000.");
|
access_token_secret: get_env_with_warning("ACCESS_TOKEN_SECRET", "default_access_secret"),
|
||||||
3000
|
refresh_token_secret: get_env_with_warning("REFRESH_TOKEN_SECRET", "default_refresh_secret"),
|
||||||
}
|
surrealdb_url: get_env_with_warning("SURREALDB_URL", "http://localhost:8000"),
|
||||||
},
|
surrealdb_username: get_env_with_warning("SURREALDB_USERNAME", "root"),
|
||||||
|
surrealdb_password: get_env_with_warning("SURREALDB_PASSWORD", "password"),
|
||||||
rust_env: match env::var("RUST_ENV") {
|
surrealdb_namespace: get_env_with_warning("SURREALDB_NAMESPACE", "namespace"),
|
||||||
Ok(val) => val,
|
surrealdb_dbname: get_env_with_warning("SURREALDB_DBNAME", "database"),
|
||||||
Err(_) => {
|
smtp_email: get_env_with_warning("SMTP_EMAIL", "no-reply@example.com"),
|
||||||
warn!("Environment variable RUST_ENV not set, using default 'development'.");
|
smtp_password: get_env_with_warning("SMTP_PASSWORD", "default_smtp_password"),
|
||||||
"development".to_string()
|
smtp_name: get_env_with_warning("SMTP_NAME", "MyApp SMTP"),
|
||||||
}
|
smtp_host: get_env_with_warning("SMTP_HOST", "smtp.gmail.com"),
|
||||||
},
|
redisdb_url: get_env_with_warning("REDISDB_URL", "localhost"),
|
||||||
|
fe_url: get_env_with_warning("FE_URL", "http://localhost"),
|
||||||
access_token_secret: match env::var("ACCESS_TOKEN_SECRET") {
|
rust_env: get_env_with_warning("RUST_ENV", "development"),
|
||||||
Ok(val) => val,
|
minio_endpoint: get_env_with_warning("MINIO_ENDPOINT", "http://localhost:9000"),
|
||||||
Err(_) => {
|
minio_bucket_name: get_env_with_warning("MINIO_BUCKET_NAME", "default_bucket"),
|
||||||
warn!("Environment variable ACCESS_TOKEN_SECRET not set, using default.");
|
minio_access_key: get_env_with_warning("MINIO_ACCESS_KEY", "minio_access"),
|
||||||
"default_access_secret".to_string()
|
minio_secret_key: get_env_with_warning("MINIO_SECRET_KEY", "minio_secret"),
|
||||||
}
|
surrealdb_url_ws: String::new(),
|
||||||
},
|
|
||||||
|
|
||||||
refresh_token_secret: match env::var("REFRESH_TOKEN_SECRET") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable REFRESH_TOKEN_SECRET not set, using default.");
|
|
||||||
"default_refresh_secret".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
surrealdb_url: match env::var("SURREALDB_URL") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SURREALDB_URL not set, using default 'http://localhost:8000'.");
|
|
||||||
"http://localhost:8000".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
surrealdb_username: match env::var("SURREALDB_USERNAME") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SURREALDB_USERNAME not set, using default 'root'.");
|
|
||||||
"root".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
surrealdb_password: match env::var("SURREALDB_PASSWORD") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SURREALDB_PASSWORD not set, using default 'password'.");
|
|
||||||
"password".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
surrealdb_namespace: match env::var("SURREALDB_NAMESPACE") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SURREALDB_NAMESPACE not set, using default 'namespace'.");
|
|
||||||
"namespace".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
surrealdb_dbname: match env::var("SURREALDB_DBNAME") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SURREALDB_DBNAME not set, using default 'database'.");
|
|
||||||
"database".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
surrealdb_url_ws: match env::var("SURREALDB_URL_WS") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SURREALDB_URL_WS not set, using default 'ws://localhost:8000/rpc'.");
|
|
||||||
"ws://localhost:8000/rpc".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
smtp_email: match env::var("SMTP_EMAIL") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SMTP_EMAIL not set, using default 'no-reply@example.com'.");
|
|
||||||
"no-reply@example.com".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
smtp_password: match env::var("SMTP_PASSWORD") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SMTP_PASSWORD not set, using default.");
|
|
||||||
"default_smtp_password".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
smtp_name: match env::var("SMTP_NAME") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SMTP_NAME not set, using default 'MyApp SMTP'.");
|
|
||||||
"MyApp SMTP".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
smtp_host: match env::var("SMTP_HOST") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable SMTP_HOST not set, using default 'smtp.gmail.com'.");
|
|
||||||
"smtp.gmail.com".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
redisdb_url: match env::var("REDISDB_URL") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable REDISDB_URL not set, using default 'localhost'.");
|
|
||||||
"localhost".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
fe_url: match env::var("FE_URL") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable FE_URL not set, using default 'http://localhost'.");
|
|
||||||
"http://localhost".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
minio_endpoint: match env::var("MINIO_ENDPOINT") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable MINIO_ENDPOINT not set, using default 'http://localhost:9000'.");
|
|
||||||
"http://localhost:9000".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
minio_bucket_name: match env::var("MINIO_BUCKET_NAME") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable MINIO_BUCKET_NAME not set, using default 'default_bucket'.");
|
|
||||||
"default_bucket".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
minio_access_key: match env::var("MINIO_ACCESS_KEY") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable MINIO_ACCESS_KEY not set, using default 'minio_access'.");
|
|
||||||
"minio_access".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
minio_secret_key: match env::var("MINIO_SECRET_KEY") {
|
|
||||||
Ok(val) => val,
|
|
||||||
Err(_) => {
|
|
||||||
warn!("Environment variable MINIO_SECRET_KEY not set, using default 'minio_secret'.");
|
|
||||||
"minio_secret".to_string()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user