From 881c1978eb8e2eaea2467e6b3bf79d2d91196ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa?= Date: Tue, 8 Oct 2019 19:34:47 +0200 Subject: [PATCH] Error when the URL scheme doesn't match the database type --- src/config.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/config.rs b/src/config.rs index c5d0b98..e2b32cc 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`")