Implement loadUniquePlayers function to retrieve and store unique player names from the database

This commit is contained in:
2025-05-21 18:16:11 +02:00
parent 69459d8822
commit 54cd559abe

24
main.go
View File

@@ -24,9 +24,6 @@ const nsqEndpoint = "https://nsq.site.quack-lab.dev/pub?topic=wowspy"
var debug *bool var debug *bool
var nsqWorkers = 32 var nsqWorkers = 32
var allPlayersAchievementsGlobal = make(map[string][]NSQMessage) // PlayerName -> list of all their achievements
var allPlayerNamesGlobal = make(map[string]bool) // Set of all player names
func main() { func main() {
root := flag.String("root", ".", "Root workdir") root := flag.String("root", ".", "Root workdir")
debug = flag.Bool("d", false, "Debug") debug = flag.Bool("d", false, "Debug")
@@ -80,10 +77,31 @@ func main() {
defer wg.Done() defer wg.Done()
saveAchievementsToDB(&db, achievements) saveAchievementsToDB(&db, achievements)
}() }()
loadUniquePlayers(&db, achievements)
saveAchievementsToSourceFiles(luaStates, achievements) saveAchievementsToSourceFiles(luaStates, achievements)
wg.Wait() wg.Wait()
} }
// loadUniquePlayers loads all unique players from the database and stores them in the achievements map
// So that we can populate our "alreadySeen" with the database values too
func loadUniquePlayers(db *DB, achievements *sync.Map) {
rows, err := db.readConn.Query("SELECT DISTINCT name FROM achievements")
if err != nil {
logger.Error("error querying unique players: %v", err)
return
}
defer rows.Close()
for rows.Next() {
var playerName string
err = rows.Scan(&playerName)
if err != nil {
logger.Error("error scanning player name: %v", err)
}
achievements.Store(playerName, &[]NSQMessage{})
}
return
}
func saveAchievementsToSourceFiles(luaStates *sync.Map, achievements *sync.Map) { func saveAchievementsToSourceFiles(luaStates *sync.Map, achievements *sync.Map) {
wg := sync.WaitGroup{} wg := sync.WaitGroup{}
luaStates.Range(func(k, v any) bool { luaStates.Range(func(k, v any) bool {