summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAotrix <[email protected]>2025-03-28 01:13:01 +0100
committerAotrix <[email protected]>2025-03-28 01:13:01 +0100
commit62cf53d167a2db73dc9aee7e1e5e1083a82fb75e (patch)
treea92bc5182f86aa4eb87172754311a31333e9c8da /src
parent42af8fc2d5f582e6bcd98d8c483180b5fbe093da (diff)
found an error in refresh_cards_table
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp22
-rw-r--r--src/postgresHandler.cpp36
2 files changed, 37 insertions, 21 deletions
diff --git a/src/main.cpp b/src/main.cpp
index fdd59cb..d0aa649 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,27 +1,7 @@
-#include "hearthstoneAPIHandler.h"
#include "postgresHandler.h"
-#include <iostream>
#include <pqxx/pqxx>
int main() {
- HearthstoneAPIHandler hs_handler;
- pqxx::connection cx{
- "postgresql://aotrix@localhost:5432/hearthstonegameinfo"};
- pqxx::work tx{cx};
-
- try {
- std::string cards = hs_handler.get_cards(
- "/?locale=fr_FR&gameMode=constructed&pageSize=40");
- std::cout << cards << std::endl;
- add_cards_to_database(cards, tx);
- tx.commit();
- } catch (pqxx::sql_error const &e) {
- std::cerr << "SQL error: " << e.what() << std::endl;
- std::cerr << "Query was: " << e.query() << std::endl;
- return 2;
- } catch (std::exception const &e) {
- std::cerr << "Error: " << e.what() << std::endl;
- return 1;
- }
+ refresh_cards_table();
return 0;
}
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;
+ }
+}