update session statistics

This commit is contained in:
Fran Jurmanović
2025-06-03 21:01:55 +02:00
parent f218a6b7cd
commit 254e4bb9a4

View File

@@ -70,6 +70,7 @@ func (s *StateHistoryService) GetStatistics(ctx *fiber.Ctx, filter *model.StateH
Session string
Track string
MaxPlayers int
SessionConcluded bool
})
// Maps for aggregating statistics
@@ -101,11 +102,13 @@ func (s *StateHistoryService) GetStatistics(ctx *fiber.Ctx, filter *model.StateH
Session string
Track string
MaxPlayers int
SessionConcluded bool
}{
StartTime: entry.DateCreated,
Session: entry.Session,
Track: entry.Track,
MaxPlayers: entry.PlayerCount,
SessionConcluded: false,
}
// Count session types
@@ -116,6 +119,12 @@ func (s *StateHistoryService) GetStatistics(ctx *fiber.Ctx, filter *model.StateH
dailySessionCount[dateStr]++
} else {
session := sessionMap[entry.SessionID]
if session.SessionConcluded {
continue
}
if (entry.PlayerCount == 0) {
session.SessionConcluded = true
}
session.EndTime = entry.DateCreated
if entry.PlayerCount > session.MaxPlayers {
session.MaxPlayers = entry.PlayerCount
@@ -123,6 +132,15 @@ func (s *StateHistoryService) GetStatistics(ctx *fiber.Ctx, filter *model.StateH
}
}
for key, session := range sessionMap {
if !session.SessionConcluded {
session.SessionConcluded = true
}
if (session.MaxPlayers == 0) {
delete(sessionMap, key)
}
}
// Calculate statistics
stats.PeakPlayers = peakPlayers
stats.TotalSessions = len(sessionMap)