Implement loadUniquePlayers function to retrieve and store unique player names from the database
This commit is contained in:
24
main.go
24
main.go
@@ -24,9 +24,6 @@ const nsqEndpoint = "https://nsq.site.quack-lab.dev/pub?topic=wowspy"
|
||||
var debug *bool
|
||||
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() {
|
||||
root := flag.String("root", ".", "Root workdir")
|
||||
debug = flag.Bool("d", false, "Debug")
|
||||
@@ -80,10 +77,31 @@ func main() {
|
||||
defer wg.Done()
|
||||
saveAchievementsToDB(&db, achievements)
|
||||
}()
|
||||
loadUniquePlayers(&db, achievements)
|
||||
saveAchievementsToSourceFiles(luaStates, achievements)
|
||||
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) {
|
||||
wg := sync.WaitGroup{}
|
||||
luaStates.Range(func(k, v any) bool {
|
||||
|
Reference in New Issue
Block a user