use default database name if none is set in the config

This commit is contained in:
Robin Appelman 2021-08-11 13:44:39 +02:00
commit 0b6614c6e0
3 changed files with 27 additions and 7 deletions

View file

@ -115,8 +115,8 @@ pub enum DbError {
NoUsername, NoUsername,
#[error("no password set")] #[error("no password set")]
NoPassword, NoPassword,
#[error("no database name")] #[error("no data directory")]
NoName, NoDataDirectory,
} }
#[derive(Debug, Error)] #[derive(Debug, Error)]

View file

@ -178,7 +178,7 @@ fn parse_db_options(parsed: &Value) -> Result<Database> {
*connect_port = port as u16; *connect_port = port as u16;
} }
} }
let database = parsed["dbname"].as_str().ok_or(DbError::NoName)?; let database = parsed["dbname"].as_str().unwrap_or("owncloud");
let verify = parsed["dbdriveroptions"][1014] // MYSQL_ATTR_SSL_VERIFY_SERVER_CERT let verify = parsed["dbdriveroptions"][1014] // MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
.clone() .clone()
@ -255,7 +255,7 @@ fn parse_db_options(parsed: &Value) -> Result<Database> {
*connect_port = port as u16; *connect_port = port as u16;
} }
} }
let database = parsed["dbname"].as_str().ok_or(DbError::NoName)?; let database = parsed["dbname"].as_str().unwrap_or("owncloud");
let ssl_options = if disable_ssl { let ssl_options = if disable_ssl {
SslOptions::Disabled SslOptions::Disabled
@ -271,9 +271,11 @@ fn parse_db_options(parsed: &Value) -> Result<Database> {
ssl_options, ssl_options,
}) })
} }
Some("sqlite3") => { Some("sqlite3" | "sqlite") => {
let data_dir = parsed["datadirectory"].as_str().ok_or(DbError::NoName)?; let data_dir = parsed["datadirectory"]
let db_name = parsed["dbname"].as_str().ok_or(DbError::NoName)?; .as_str()
.ok_or(DbError::NoDataDirectory)?;
let db_name = parsed["dbname"].as_str().unwrap_or("owncloud");
Ok(Database::Sqlite { Ok(Database::Sqlite {
database: format!("{}/{}.db", data_dir, db_name).into(), database: format!("{}/{}.db", data_dir, db_name).into(),
}) })
@ -823,3 +825,14 @@ fn test_parse_postgres_fqdn() {
config.database.into(), config.database.into(),
); );
} }
#[test]
fn test_parse_config_sqlite_default_db() {
let config = config_from_file("tests/configs/sqlite_default_db.php");
assert_debug_equal(
&Database::Sqlite {
database: "/nc/data/owncloud.db".into(),
},
&config.database,
);
}

View file

@ -0,0 +1,7 @@
<?php
$CONFIG = [
'overwrite.cli.url' => 'https://cloud.example.com',
'dbtype' => 'sqlite',
'datadirectory' => '/nc/data'
];