Skip to content

Instantly share code, notes, and snippets.

@hugopeixoto
Created July 12, 2024 11:42
Show Gist options
  • Save hugopeixoto/c77f7a88552b7a33febe07fd8ffad3cf to your computer and use it in GitHub Desktop.
Save hugopeixoto/c77f7a88552b7a33febe07fd8ffad3cf to your computer and use it in GitHub Desktop.
<?php
public static function RebuildGameCaches($game_id) {
wikilog("RebuildGameCaches started");
$game = database_find_by('games', ['game_id' => $game_id]);
$records = database_filter_by('records', ['game_id' => $game_id]);
// $levels information is not loaded in $records using a join on purpose
// to reduce memory usage.
$levels = index_by(database_fetch_all("
SELECT chart_modifiers2.*
FROM levels
JOIN chart_modifiers2 USING (level_id)
WHERE game_id = ?
", [$game_id]), 'level_id');
foreach ($records as &$record) {
$record['level'] = $levels[$record['level_id']];
}
unset($record);
wikilog("RebuildGameCaches loaded");
$caches = [];
$caches['proof'] = self::BuildGameProofCache($game_id, $records);
$caches['vproof'] = self::BuildGameVideoProofCache($game_id, $records);
$caches['subs'] = self::BuildGameSubmissionsCache($game_id, $records);
$caches['csp'] = self::BuildGameCSPCache($game, $records);
$caches['standard'] = self::BuildGameMedalsCache($game, $records);
$caches['arcade'] = self::BuildGameArcadeCacheNew($game_id, $records);
$caches['incremental'] = self::BuildGameIncrementalCacheNew($game_id, $records);
$caches['collectible'] = self::BuildGameCollectibleCacheNew($game_id, $records);
$caches['speedrun'] = self::BuildGameSpeedrunCacheNew($game_id, $records);
$caches['solution'] = self::BuildGameSolutionCacheNew($game_id, $records);
$caches['challenge'] = self::BuildGameUserChallengeCache($game, $records);
$trophies = self::BuildGameTrophyCache($game, $caches);
wikilog("RebuildGameCaches processed");
database_transaction(function() use ($game, $game_id, &$caches, &$trophies) {
self::SaveCache("proof", $game_id, $caches['proof']);
self::SaveCache("vproof", $game_id, $caches['vproof']);
self::SaveCache("submissions", $game_id, $caches['subs']);
self::SaveCache("csp", $game_id, $caches['csp']);
self::SaveCache("medals", $game_id, $caches['standard']);
self::SaveCache("arcade", $game_id, $caches['arcade']);
self::SaveCache("incremental", $game_id, $caches['incremental']);
self::SaveCache("collectible", $game_id, $caches['collectible']);
self::SaveCache("speedrun", $game_id, $caches['speedrun']);
self::SaveCache("solution", $game_id, $caches['solution']);
self::SaveCache("userchallenge", $game_id, $caches['challenge']);
self::SaveCache("trophy", $game_id, $trophies);
});
wikilog("RebuildGameCaches stored");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment