summaryrefslogtreecommitdiff
path: root/src/postgresHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/postgresHandler.cpp')
-rw-r--r--src/postgresHandler.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/postgresHandler.cpp b/src/postgresHandler.cpp
index 8b8c6ad..26828bc 100644
--- a/src/postgresHandler.cpp
+++ b/src/postgresHandler.cpp
@@ -1,4 +1,5 @@
#include "postgresHandler.h"
+#include "hearthstoneAPIHandler.h"
#include <cctype>
#include <cstddef>
#include <cstdlib>
@@ -125,3 +126,38 @@ void add_cards_to_database(const std::string &t_cards, pqxx::work &t_tx) {
closing_bracket_pos = t_cards.find("}", closing_bracket_pos + 1);
}
}
+
+void refresh_cards_table() {
+ HearthstoneAPIHandler hs_handler;
+ pqxx::connection cx{
+ "postgresql://aotrix@localhost:5432/hearthstonegameinfo"};
+ pqxx::work tx{cx};
+
+ try {
+ execute_query(tx, "DELETE FROM cards");
+ std::regex key_regex("\"pageCount\":([0-9]+)");
+ std::string cards =
+ hs_handler.get_cards("/?locale=fr_FR&gameMode=constructed");
+ add_cards_to_database(cards, tx);
+ auto nb_pages_begin =
+ std::sregex_iterator(cards.begin(), cards.end(), key_regex);
+ auto nb_pages_end = std::sregex_iterator();
+ if (nb_pages_begin != nb_pages_end) {
+ int nb_pages = std::stoi((*nb_pages_begin)[1].str());
+ // FIXME: [Process exited 139]
+ // for (int i = 2; i < nb_pages; i++) {
+ for (int i = 2; i < 4; i++) {
+ cards = hs_handler.get_cards(std::format(
+ "/?locale=fr_FR&gameMode=constructed&page={}", i));
+ add_cards_to_database(cards, tx);
+ }
+ }
+ display_query_result(execute_query(tx, "SELECT COUNT(*) FROM cards"));
+ tx.commit();
+ } catch (pqxx::sql_error const &e) {
+ std::cerr << "SQL error: " << e.what() << std::endl;
+ std::cerr << "Query was: " << e.query() << std::endl;
+ } catch (std::exception const &e) {
+ std::cerr << "Error: " << e.what() << std::endl;
+ }
+}