generated from alecodes/base-template
fix: gracefully handle no db password
This commit is contained in:
parent
29756b9578
commit
b22a5e5876
2 changed files with 17 additions and 8 deletions
|
|
@ -2,7 +2,7 @@ use std::fmt::Display;
|
|||
use std::net::SocketAddr;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use crate::Result;
|
||||
use crate::{Error, Result};
|
||||
use figment::providers::{Env, Format, Serialized, Toml};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
|
|
@ -19,7 +19,11 @@ pub struct DBConfig {
|
|||
|
||||
impl Display for DBConfig {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{}", self.generate_db_string(true))
|
||||
write!(
|
||||
f,
|
||||
"{}",
|
||||
self.generate_db_string(true).map_err(|_| std::fmt::Error)?
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -36,13 +40,16 @@ impl Default for DBConfig {
|
|||
}
|
||||
|
||||
impl DBConfig {
|
||||
pub fn generate_db_string(&self, ofuscate: bool) -> String {
|
||||
pub fn generate_db_string(&self, ofuscate: bool) -> Result<String> {
|
||||
if let Some(value) = &self.string {
|
||||
return value.clone();
|
||||
return Ok(value.clone());
|
||||
}
|
||||
|
||||
let db_password = if ofuscate {
|
||||
let mut db_password = self.password.clone().unwrap();
|
||||
let mut db_password = self
|
||||
.password
|
||||
.clone()
|
||||
.ok_or(Error::Runtime("No database password provided"))?;
|
||||
let password_length = db_password.len();
|
||||
|
||||
let visible_characters = 4;
|
||||
|
|
@ -59,7 +66,9 @@ impl DBConfig {
|
|||
|
||||
db_password
|
||||
} else {
|
||||
self.password.clone().unwrap()
|
||||
self.password
|
||||
.clone()
|
||||
.ok_or(Error::Runtime("No database password provided"))?
|
||||
};
|
||||
|
||||
let db_string = format!(
|
||||
|
|
@ -67,7 +76,7 @@ impl DBConfig {
|
|||
self.user, db_password, self.host, self.name,
|
||||
);
|
||||
|
||||
db_string.to_owned()
|
||||
Ok(db_string.to_owned())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue