Implement writing to database with the new structure
This commit is contained in:
@@ -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
18
main.go
@@ -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{}
|
||||
|
||||
Reference in New Issue
Block a user