Make some of the database config values optional (fixes #1550)

pull/1552/head
Felix Ableitner 2021-04-06 14:57:37 +02:00
parent df7fe705eb
commit ccdf117c8f
6 changed files with 42 additions and 22 deletions

View File

@ -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),
}
}
}

View File

@ -1,6 +1,8 @@
use crate::{
location_info,
settings::structs::{
settings::{
defaults::{DEFAULT_DATABASE_DB, DEFAULT_DATABASE_PORT, DEFAULT_DATABASE_USER},
structs::{
CaptchaConfig,
DatabaseConfig,
EmailConfig,
@ -9,6 +11,7 @@ use crate::{
Settings,
SetupConfig,
},
},
LemmyError,
};
use anyhow::{anyhow, Context};
@ -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()),
)
}

View File

@ -27,12 +27,12 @@ pub struct CaptchaConfig {
#[derive(Debug, Deserialize, Clone)]
pub struct DatabaseConfig {
pub user: String,
pub user: Option<String>,
pub password: String,
pub host: String,
pub port: i32,
pub database: String,
pub pool_size: u32,
pub port: Option<i32>,
pub database: Option<String>,
pub pool_size: Option<u32>,
}
#[derive(Debug, Deserialize, Clone)]

View File

@ -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

View File

@ -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

View File

@ -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::<PgConnection>::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));