diff --git a/src/core/database.cpp b/src/core/database.cpp index ea990ba..973633c 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -397,5 +397,41 @@ unsigned int Database::storeArticles(std::vector articles) } } + return count; +} + +unsigned int Database::loadSellers(std::vector>& sellers) +{ + int retCode{}; + int count{}; + sqlite3_stmt* stmt; + + retCode = sqlite3_prepare_v2(db_, + "SELECT id, seller_no, first_name, last_name, " + "num_offered_articles FROM sellers ORDER BY seller_no", + -1, &stmt, nullptr); + if (retCode != SQLITE_OK) + throw std::runtime_error(sqlite3_errmsg(db_)); + + retCode = sqlite3_step(stmt); + + sellers.clear(); + + while (retCode != SQLITE_DONE) { + ++count; + auto seller = std::make_unique(); + seller->setUuidFromString(reinterpret_cast(sqlite3_column_text(stmt, 0))); + seller->setSellerNo(sqlite3_column_int(stmt, 1)); + seller->setFirstName(reinterpret_cast(sqlite3_column_text(stmt, 2))); + seller->setLastName(reinterpret_cast(sqlite3_column_text(stmt, 3))); + seller->setNumArticlesOffered(sqlite3_column_int(stmt, 4)); + seller->setState(Seller::State::OK); + sellers.push_back(std::move(seller)); + + retCode = sqlite3_step(stmt); + } + + sqlite3_finalize(stmt); + return count; } \ No newline at end of file diff --git a/src/core/database.h b/src/core/database.h index 6040087..6e91f91 100644 --- a/src/core/database.h +++ b/src/core/database.h @@ -17,6 +17,7 @@ class Database Database& operator=(const Database&) = delete; void exec(const std::string& sql); unsigned int storeSellers(std::vector>& sellers); + unsigned int loadSellers(std::vector>& sellers); private: sqlite3* db_{nullptr}; diff --git a/src/core/marketplace.cpp b/src/core/marketplace.cpp index e1fcc57..5bd3a1f 100644 --- a/src/core/marketplace.cpp +++ b/src/core/marketplace.cpp @@ -12,13 +12,15 @@ Marketplace::Marketplace() void Marketplace::storeToDb() { - //const std::string DB_PATH{"/tmp/kima2.db"}; - Database db; db.storeSellers(sellers_); } -void Marketplace::loadFromDb() {} +void Marketplace::loadFromDb() +{ + Database db; + db.loadSellers(sellers_); +} std::vector>& Marketplace::getSellers() { return sellers_; } diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 8734a64..0839e78 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -27,7 +27,7 @@ void MainWindow::on_actionEditSeller_triggered() STATUSBAR_TIMEOUT); } else { marketplace_->loadFromDb(); - statusBar()->showMessage("Änderungen an den Verkäufer-Stammdaten verworfen.", + statusBar()->showMessage("Änderungen an den Verkäufer-Stammdaten verworfen!", STATUSBAR_TIMEOUT); } } \ No newline at end of file