git repos / oastat_static_web_generator

commit 8da0232c

Poul Sander · 2025-11-29 20:51
8da0232c231c7c6fa43ad69509d74b989984de2c patch · browse files
parent 61ebe8b707c457657038fd1cb18ae57633e29575

Prevent generating the same page more than one time. Will stop recursive as more pages and links are added.

Changed files

M src/oastat_static_web_generator.cpp before
diff --git a/src/oastat_static_web_generator.cpp b/src/oastat_static_web_generator.cpp index a5d1e04..457dcb2 100644 --- a/src/oastat_static_web_generator.cpp +++ b/src/oastat_static_web_generator.cpp
@@ -6,6 +6,7 @@
#include <ctemplate/template.h>
#include <vector>
#include <map>
+#include <set>
#include <sstream>
#include <iomanip>
#include "common/common.hpp"
@@ -76,6 +77,8 @@ static std::map<int, int> player_deaths;
static std::map<int, std::map<int, int>> player_awards;
static std::map<int, std::map<int, int>> player_weapon_kills;
static std::map<std::string, MapInfo> map_infos;
+static std::set<int> generated_games;
+static std::set<std::string> generated_maps;
void populate_player_deaths(cppdb::session& database, const std::vector<int>& player_ids) {
PrintStartEndTimer t("populate_player_deaths");
@@ -225,6 +228,11 @@ void addPlayerToTemplateDict(ctemplate::TemplateDictionary* dict, const OastatPl
}
void write_html_game(cppdb::session& database, const OastatGame& game) {
+ // Skip if already generated
+ if (generated_games.count(game.gamenumber)) {
+ return;
+ }
+ generated_games.insert(game.gamenumber);
ctemplate::TemplateDictionary game_tpl("templates/game.tpl");
game_tpl.SetValue("GENERATION_DATE", timestamp_now_as_string(database));
game_tpl.SetValue("GAME_NUMBER", std::to_string(game.gamenumber));
@@ -300,6 +308,11 @@ void getMapRecentGames(cppdb::session& database, const std::string& mapname, std
}
void write_html_map(cppdb::session& database, const std::string& mapname) {
+ // Skip if already generated
+ if (generated_maps.count(mapname)) {
+ return;
+ }
+ generated_maps.insert(mapname);
ctemplate::TemplateDictionary map_tpl("templates/map.tpl");
map_tpl.SetValue("GENERATION_DATE", timestamp_now_as_string(database));
map_tpl.SetValue("MAP_NAME", mapname);