Skip to content

Commit 61f306e

Browse files
committed
refactor
1 parent 90deb26 commit 61f306e

File tree

1 file changed

+42
-46
lines changed

1 file changed

+42
-46
lines changed

src/common/config.rs

Lines changed: 42 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -220,76 +220,72 @@ impl Config {
220220
panic!("")
221221
});
222222

223-
// Check if a custom DB_URL is provided
224223
let db_url = &CLI_ARGS
225224
.db_url
226225
.clone()
227226
.or_else(|| dotenv.db_url.clone())
228227
.or_else(|| default_config.map(|x| x.db_url.clone()).flatten());
229228

230-
// If DB_URL is provided, we don't require individual connection parameters
231-
let db_host = if db_url.is_some() {
229+
let db_host_chain = || {
232230
CLI_ARGS
233231
.db_host
234232
.clone()
235233
.or_else(|| dotenv.db_host.clone())
236234
.or_else(|| default_config.map(|x| x.db_host.clone()))
237-
.unwrap_or_default()
238-
} else {
239-
CLI_ARGS
240-
.db_host
241-
.clone()
242-
.or_else(|| dotenv.db_host.clone())
243-
.or_else(|| default_config.map(|x| x.db_host.clone()))
244-
.expect(
245-
r"
246-
Failed to fetch DB host.
247-
Please provide it at least through a CLI arg or an environment variable or through
248-
file based configuration, or provide a custom DB_URL
249-
",
250-
)
251235
};
252236

253-
let db_port = if db_url.is_some() {
254-
CLI_ARGS
255-
.db_port
256-
.or(dotenv.db_port)
257-
.or_else(|| default_config.map(|x| x.db_port))
258-
.unwrap_or_default()
259-
} else {
237+
let db_host = match (db_url.is_some(), db_host_chain()) {
238+
(true, Some(v)) => v,
239+
(true, None) => String::new(),
240+
(false, Some(v)) => v,
241+
(false, None) => panic!(
242+
r"
243+
Failed to fetch DB host.
244+
Please provide it at least through a CLI arg or an environment variable or through
245+
file based configuration, or provide a custom DB_URL
246+
"
247+
),
248+
};
249+
250+
let db_port_chain = || {
260251
CLI_ARGS
261252
.db_port
262253
.or(dotenv.db_port)
263254
.or_else(|| default_config.map(|x| x.db_port))
264-
.expect(
265-
r"
266-
Failed to fetch DB port.
267-
Please provide it at least through a CLI arg or an environment variable or through
268-
file based configuration, or provide a custom DB_URL
269-
",
270-
)
271255
};
272256

273-
let db_user = if db_url.is_some() {
274-
CLI_ARGS
275-
.db_user
276-
.clone()
277-
.or_else(|| dotenv.db_user.clone())
278-
.or_else(|| default_config.map(|x| x.db_user.clone()))
279-
.unwrap_or_default()
280-
} else {
257+
let db_port = match (db_url.is_some(), db_port_chain()) {
258+
(true, Some(v)) => v,
259+
(true, None) => 0,
260+
(false, Some(v)) => v,
261+
(false, None) => panic!(
262+
r"
263+
Failed to fetch DB port.
264+
Please provide it at least through a CLI arg or an environment variable or through
265+
file based configuration, or provide a custom DB_URL
266+
"
267+
),
268+
};
269+
270+
let db_user_chain = || {
281271
CLI_ARGS
282272
.db_user
283273
.clone()
284274
.or_else(|| dotenv.db_user.clone())
285275
.or_else(|| default_config.map(|x| x.db_user.clone()))
286-
.expect(
287-
r"
288-
Failed to fetch DB user.
289-
Please provide it at least through a CLI arg or an environment variable or through
290-
file based configuration, or provide a custom DB_URL
291-
",
292-
)
276+
};
277+
278+
let db_user = match (db_url.is_some(), db_user_chain()) {
279+
(true, Some(v)) => v,
280+
(true, None) => String::new(),
281+
(false, Some(v)) => v,
282+
(false, None) => panic!(
283+
r"
284+
Failed to fetch DB user.
285+
Please provide it at least through a CLI arg or an environment variable or through
286+
file based configuration, or provide a custom DB_URL
287+
"
288+
),
293289
};
294290

295291
let db_pass = &CLI_ARGS

0 commit comments

Comments
 (0)