diff --git a/src/config.rs b/src/config.rs index c5d0b98c..e2b32cc3 100644 --- a/src/config.rs +++ b/src/config.rs @@ -366,6 +366,26 @@ make_config! { } fn validate_config(cfg: &ConfigItems) -> Result<(), Error> { + let db_url = cfg.database_url.to_lowercase(); + + if cfg!(feature = "sqlite") { + if db_url.starts_with("mysql:") || db_url.starts_with("postgresql:") { + err!("`DATABASE_URL` is meant for MySQL or Postgres, while this server is meant for SQLite") + } + } + + if cfg!(feature = "mysql") { + if !db_url.starts_with("mysql:") { + err!("`DATABASE_URL` should start with mysql: when using the MySQL server") + } + } + + if cfg!(feature = "postgresql") { + if !db_url.starts_with("postgresql:") { + err!("`DATABASE_URL` should start with postgresql: when using the PostgreSQL server") + } + } + if let Some(ref token) = cfg.admin_token { if token.trim().is_empty() { err!("`ADMIN_TOKEN` is enabled but has an empty value. To enable the admin page without token, use `DISABLE_ADMIN_TOKEN`")