From ccdf117c8fe8aa47e7ddd60889cfae0b78285040 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 6 Apr 2021 14:57:37 +0200 Subject: [PATCH] Make some of the database config values optional (fixes #1550) --- crates/utils/src/settings/defaults.rs | 13 +++++++--- crates/utils/src/settings/mod.rs | 31 ++++++++++++++++-------- crates/utils/src/settings/structs.rs | 8 +++--- docker/dev/docker_update_volume_mount.sh | 2 +- docker/dev/volume_mount.dockerfile | 1 - src/main.rs | 9 +++++-- 6 files changed, 42 insertions(+), 22 deletions(-) diff --git a/crates/utils/src/settings/defaults.rs b/crates/utils/src/settings/defaults.rs index 56d24c7fb..1ca15d248 100644 --- a/crates/utils/src/settings/defaults.rs +++ b/crates/utils/src/settings/defaults.rs @@ -21,15 +21,20 @@ impl Default for Settings { } } +pub(in crate::settings) static DEFAULT_DATABASE_USER: &str = "lemmy"; +pub(in crate::settings) static DEFAULT_DATABASE_PORT: i32 = 5432; +pub(in crate::settings) static DEFAULT_DATABASE_DB: &str = "lemmy"; +pub static DEFAULT_DATABASE_POOL_SIZE: u32 = 5; + impl Default for DatabaseConfig { fn default() -> Self { Self { - user: "lemmy".into(), + user: Some(DEFAULT_DATABASE_USER.to_string()), password: "password".into(), host: "localhost".into(), - port: 5432, - database: "lemmy".into(), - pool_size: 5, + port: Some(DEFAULT_DATABASE_PORT), + database: Some(DEFAULT_DATABASE_DB.to_string()), + pool_size: Some(DEFAULT_DATABASE_POOL_SIZE), } } } diff --git a/crates/utils/src/settings/mod.rs b/crates/utils/src/settings/mod.rs index d052fec6c..dfdfc5933 100644 --- a/crates/utils/src/settings/mod.rs +++ b/crates/utils/src/settings/mod.rs @@ -1,13 +1,16 @@ use crate::{ location_info, - settings::structs::{ - CaptchaConfig, - DatabaseConfig, - EmailConfig, - FederationConfig, - RateLimitConfig, - Settings, - SetupConfig, + settings::{ + defaults::{DEFAULT_DATABASE_DB, DEFAULT_DATABASE_PORT, DEFAULT_DATABASE_USER}, + structs::{ + CaptchaConfig, + DatabaseConfig, + EmailConfig, + FederationConfig, + RateLimitConfig, + Settings, + SetupConfig, + }, }, LemmyError, }; @@ -16,7 +19,7 @@ use deser_hjson::from_str; use merge::Merge; use std::{env, fs, io::Error, net::IpAddr, sync::RwLock}; -pub(crate) mod defaults; +pub mod defaults; pub mod structs; static CONFIG_FILE: &str = "config/config.hjson"; @@ -60,7 +63,15 @@ impl Settings { let conf = self.database(); format!( "postgres://{}:{}@{}:{}/{}", - conf.user, conf.password, conf.host, conf.port, conf.database, + conf + .user + .unwrap_or_else(|| DEFAULT_DATABASE_USER.to_string()), + conf.password, + conf.host, + conf.port.unwrap_or(DEFAULT_DATABASE_PORT), + conf + .database + .unwrap_or_else(|| DEFAULT_DATABASE_DB.to_string()), ) } diff --git a/crates/utils/src/settings/structs.rs b/crates/utils/src/settings/structs.rs index 21d89b98a..05c7ed476 100644 --- a/crates/utils/src/settings/structs.rs +++ b/crates/utils/src/settings/structs.rs @@ -27,12 +27,12 @@ pub struct CaptchaConfig { #[derive(Debug, Deserialize, Clone)] pub struct DatabaseConfig { - pub user: String, + pub user: Option, pub password: String, pub host: String, - pub port: i32, - pub database: String, - pub pool_size: u32, + pub port: Option, + pub database: Option, + pub pool_size: Option, } #[derive(Debug, Deserialize, Clone)] diff --git a/docker/dev/docker_update_volume_mount.sh b/docker/dev/docker_update_volume_mount.sh index ef68f1fd4..bc4f832fe 100755 --- a/docker/dev/docker_update_volume_mount.sh +++ b/docker/dev/docker_update_volume_mount.sh @@ -8,4 +8,4 @@ set -e mkdir -p volumes/pictrs sudo chown -R 991:991 volumes/pictrs sudo docker build ../../ --file ../dev/volume_mount.dockerfile -t lemmy-dev:latest -sudo docker-compose up -d +sudo docker-compose up diff --git a/docker/dev/volume_mount.dockerfile b/docker/dev/volume_mount.dockerfile index 0cb036247..38e019f7f 100644 --- a/docker/dev/volume_mount.dockerfile +++ b/docker/dev/volume_mount.dockerfile @@ -24,7 +24,6 @@ RUN apt-get update -y RUN apt-get install -y libpq-dev espeak # Copy resources -COPY config/defaults.hjson /config/defaults.hjson COPY --from=rust /app/lemmy_server /app/lemmy EXPOSE 8536 diff --git a/src/main.rs b/src/main.rs index 5b8a7ec1d..0e3cb49ff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,7 @@ use lemmy_routes::{feeds, images, nodeinfo, webfinger}; use lemmy_server::{api_routes, code_migrations::run_advanced_migrations, scheduled_tasks}; use lemmy_utils::{ rate_limit::{rate_limiter::RateLimiter, RateLimit}, - settings::structs::Settings, + settings::{defaults::DEFAULT_DATABASE_POOL_SIZE, structs::Settings}, LemmyError, }; use lemmy_websocket::{chat_server::ChatServer, LemmyContext}; @@ -38,7 +38,12 @@ async fn main() -> Result<(), LemmyError> { }; let manager = ConnectionManager::::new(&db_url); let pool = Pool::builder() - .max_size(settings.database().pool_size) + .max_size( + settings + .database() + .pool_size + .unwrap_or(DEFAULT_DATABASE_POOL_SIZE), + ) .build(manager) .unwrap_or_else(|_| panic!("Error connecting to {}", db_url));