Implement writing to database with the new structure

This commit is contained in:
2025-05-21 12:26:22 +02:00
parent f55a6de8c0
commit 3f659d351d
2 changed files with 19 additions and 1 deletions

View File

@@ -65,7 +65,7 @@ var whitelistedAchievements = map[string]bool{
"12448": true,
}
func Save(message *NSQMessage, db *DB) error {
func Save(message NSQMessage, db *DB) error {
_, ok := whitelistedAchievements[message.ID]
if !ok {
logger.Debug("Received message for non-whitelisted achievement %s", message.ID)

18
main.go
View File

@@ -70,6 +70,12 @@ func main() {
luaStates := loadLuaStates(matches)
achievements := loadAchievements(luaStates)
wg := sync.WaitGroup{}
wg.Add(1)
// We can save the achievements to the database while doing something else unrelated
go saveAchievementsToDB(&db, achievements)
wg.Wait()
// --- Pass 1: Extract all data ---
// logger.Info("Starting Pass 1: Extracting data from all Heimdall.lua files...")
@@ -141,6 +147,18 @@ func main() {
// logger.Info("All NSQ workers finished. Program complete.")
}
func saveAchievementsToDB(db *DB, achievements *sync.Map) {
achievements.Range(func(k, v any) bool {
playerName := k.(string)
playerAchievements := v.(*[]NSQMessage)
logger.Info("Saving %d achievements for player %s", len(*playerAchievements), playerName)
for _, ach := range *playerAchievements {
Save(ach, db)
}
return true
})
}
func loadLuaStates(matches []string) *sync.Map {
wg := sync.WaitGroup{}
fileLuaStates := &sync.Map{}