diff --git a/src/core/database.cpp b/src/core/database.cpp index ea990ba..11c8b68 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -1,36 +1,17 @@ #include "database.h" -#include #include #include #include -Database::Database(const std::string& dbname) +Database::Database(const std::string& dbname) : db_(nullptr) { dbname_ = dbname; - init(); -} - -Database::Database() -{ - namespace fs = std::filesystem; -#if defined(__linux__) - fs::path dbpath = fs::path(std::getenv("HOME")) / ".local/share/kima2-cpp"; -#elif defined(__WIN64) || defined(__WIN32) - fs::path dbpath = fs::path(std::getenv("LOCALAPPDATA") / "/kima2-cpp"; -#else - throw std::runtime_error("Platform not supported."); -#endif - if (!fs::exists(dbpath)) { - try { - fs::create_directories(dbpath); - } catch (fs::filesystem_error& err) { - throw err; - } + const int errCode = sqlite3_open(dbname_.c_str(), &db_); + if (errCode) { + throw std::runtime_error("Could not open database file."); } - dbpath /= "kima2.db"; - dbname_ = dbpath.string(); - init(); + sqlite3_db_config(db_, SQLITE_DBCONFIG_ENABLE_FKEY); } Database::~Database() { sqlite3_close(db_); } @@ -101,12 +82,6 @@ void Database::createNew() void Database::init() { - const int errCode = sqlite3_open(dbname_.c_str(), &db_); - if (errCode) { - throw std::runtime_error("Could not open database file."); - } - sqlite3_db_config(db_, SQLITE_DBCONFIG_ENABLE_FKEY); - int version = getVersion(); switch (version) { @@ -278,7 +253,7 @@ unsigned int Database::storeSellers(std::vector>& seller endTransaction(); - // Everything went fine, so we can now update our objects + // Everything went fine, so we can now update our objects sellers.erase(std::remove_if(sellers.begin(), sellers.end(), [](const std::unique_ptr& seller) { return (seller->getState() == Seller::State::DELETE); diff --git a/src/core/database.h b/src/core/database.h index 6040087..5fe126c 100644 --- a/src/core/database.h +++ b/src/core/database.h @@ -10,18 +10,17 @@ class Database { public: - explicit Database(const std::string& dbname); - Database(); + Database(const std::string& dbname); ~Database(); Database(const Database&) = delete; Database& operator=(const Database&) = delete; void exec(const std::string& sql); + void init(); unsigned int storeSellers(std::vector>& sellers); private: - sqlite3* db_{nullptr}; + sqlite3* db_; std::string dbname_; - void init(); void beginTransaction(); void endTransaction(); void createNew(); diff --git a/src/core/marketplace.cpp b/src/core/marketplace.cpp index e1fcc57..2534905 100644 --- a/src/core/marketplace.cpp +++ b/src/core/marketplace.cpp @@ -12,9 +12,10 @@ Marketplace::Marketplace() void Marketplace::storeToDb() { - //const std::string DB_PATH{"/tmp/kima2.db"}; + const std::string DB_PATH{"/tmp/kima2.db"}; - Database db; + Database db(DB_PATH); + db.init(); db.storeSellers(sellers_); } diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index d17aaa6..0ddff48 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -18,4 +18,4 @@ set(GUI_SOURCES ) add_executable(kima2 ${GUI_SOURCES}) -target_link_libraries(kima2 core Qt5::Widgets stdc++fs) +target_link_libraries(kima2 core Qt5::Widgets) diff --git a/src/gui/kima2.cpp b/src/gui/kima2.cpp index 6b2d555..cb210ef 100644 --- a/src/gui/kima2.cpp +++ b/src/gui/kima2.cpp @@ -1,17 +1,16 @@ #include "mainwindow.h" +#include + #include + int main(int argc, char* argv[]) { - // Q_INIT_RESOURCE(application); + //Q_INIT_RESOURCE(application); QApplication kimaApp{argc, argv}; - QCoreApplication::setOrganizationName("RustySoft"); - QCoreApplication::setOrganizationDomain("rustysoft.de"); - QCoreApplication::setApplicationName("KIMA2"); - auto mainWin = std::make_unique(); mainWin->show(); diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 8734a64..3cf4428 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -2,19 +2,14 @@ #include "sellerdialog.h" -constexpr int STATUSBAR_TIMEOUT = 5000; - MainWindow::MainWindow() { ui_.setupUi(this); connect(ui_.actionQuit, &QAction::triggered, qApp, QApplication::quit); - connect(ui_.actionEditSeller, &QAction::triggered, this, - &MainWindow::on_actionEditSeller_triggered); + connect(ui_.actionEditSeller, &QAction::triggered, this, &MainWindow::on_actionEditSeller_triggered); marketplace_ = std::make_unique(); - marketplace_->loadFromDb(); - statusBar()->showMessage("Gespeicherte Daten wurden geladen.", STATUSBAR_TIMEOUT); } void MainWindow::on_actionEditSeller_triggered() @@ -23,11 +18,7 @@ void MainWindow::on_actionEditSeller_triggered() int retCode = dialog->exec(); if (retCode == QDialog::Accepted) { marketplace_->storeToDb(); - statusBar()->showMessage("Änderungen an den Verkäufer-Stammdaten gespeichert.", - STATUSBAR_TIMEOUT); } else { marketplace_->loadFromDb(); - statusBar()->showMessage("Änderungen an den Verkäufer-Stammdaten verworfen.", - STATUSBAR_TIMEOUT); } } \ No newline at end of file diff --git a/test/test_database.cpp b/test/test_database.cpp index ef2a20f..9fda5df 100644 --- a/test/test_database.cpp +++ b/test/test_database.cpp @@ -9,12 +9,14 @@ BOOST_AUTO_TEST_CASE(create_database) { - BOOST_CHECK_NO_THROW(Database db(":memory:")); + Database db(":memory:"); + BOOST_CHECK_NO_THROW(db.init()); } BOOST_AUTO_TEST_CASE(store_seller_fail) { Database db(":memory:"); + db.init(); std::vector> sellers; sellers.push_back(std::make_unique()); sellers.push_back(std::make_unique()); @@ -23,6 +25,7 @@ BOOST_AUTO_TEST_CASE(store_seller_fail) BOOST_AUTO_TEST_CASE(store_sellers_succ) { Database db(":memory:"); + db.init(); std::vector> sellers; auto a = std::make_unique(); a->createUuid(); @@ -44,6 +47,7 @@ BOOST_AUTO_TEST_CASE(store_sellers_succ) BOOST_AUTO_TEST_CASE(seller_states) { Database db(":memory:"); + db.init(); std::vector> sellers; auto a = std::make_unique(); a->setSellerNo(3);