diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index d05bdeb81b13ca6a98d25297973991b29693ff06..02e9e226ec750d90bee09a4d1513eed5f3e4f0bb 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -349,57 +349,16 @@ int main(int argc, char **argv) component_ = &transport; // Logger logger(&transport); - StorageBackend *storageBackend = NULL; - -#ifdef WITH_SQLITE - if (CONFIG_STRING(&config, "database.type") == "sqlite3") { - storageBackend = new SQLite3Backend(&config); - if (!storageBackend->connect()) { - std::cerr << "Can't connect to database. Check the log to find out the reason.\n"; - return -1; - } - } -#else - if (CONFIG_STRING(&config, "database.type") == "sqlite3") { - std::cerr << "Spectrum2 is not compiled with mysql backend.\n"; - return -2; - } -#endif - -#ifdef WITH_MYSQL - if (CONFIG_STRING(&config, "database.type") == "mysql") { - storageBackend = new MySQLBackend(&config); - if (!storageBackend->connect()) { - std::cerr << "Can't connect to database. Check the log to find out the reason.\n"; - return -1; - } - } -#else - if (CONFIG_STRING(&config, "database.type") == "mysql") { - std::cerr << "Spectrum2 is not compiled with mysql backend.\n"; + std::string error; + StorageBackend *storageBackend = StorageBackend::createBackend(&config, error); + if (storageBackend == NULL) { + std::cerr << error << "\n"; return -2; } -#endif - -#ifdef WITH_PQXX - if (CONFIG_STRING(&config, "database.type") == "pqxx") { - storageBackend = new PQXXBackend(&config); - if (!storageBackend->connect()) { - std::cerr << "Can't connect to database. Check the log to find out the reason.\n"; - return -1; - } - } -#else - if (CONFIG_STRING(&config, "database.type") == "pqxx") { - std::cerr << "Spectrum2 is not compiled with pqxx backend.\n"; - return -2; - } -#endif - if (CONFIG_STRING(&config, "database.type") != "mysql" && CONFIG_STRING(&config, "database.type") != "sqlite3" - && CONFIG_STRING(&config, "database.type") != "pqxx" && CONFIG_STRING(&config, "database.type") != "none") { - std::cerr << "Unknown storage backend " << CONFIG_STRING(&config, "database.type") << "\n"; - return -2; + if (!storageBackend->connect()) { + std::cerr << "Can't connect to database. Check the log to find out the reason.\n"; + return -1; } UserManager userManager(&transport, &userRegistry, storageBackend);