Correctly update/remove old servers

This commit is contained in:
A. Svensson 2017-08-14 17:12:06 +02:00
parent 484477daab
commit ae58539a4b

37
main.go
View File

@ -11,8 +11,12 @@ import (
"github.com/gorilla/mux" "github.com/gorilla/mux"
) )
// Used internally for logging a global # of players const (
const internalServerTitle string = "_ss13.se" // Used internally for logging a global # of players
internalServerTitle string = "_ss13.se"
oldServerTimeout = 24 * 7 // in hours
)
type Conf struct { type Conf struct {
// Web stuff // Web stuff
@ -109,7 +113,7 @@ func (a *App) runUpdater(webClient *http.Client) {
a.Log("Error saving server history: %s", err) a.Log("Error saving server history: %s", err)
} }
if err := a.updateOldServers(now, servers); err != nil { if err := a.updateOldServers(now); err != nil {
a.Log("Error updating old servers: %s", err) a.Log("Error updating old servers: %s", err)
} }
} }
@ -130,21 +134,22 @@ func (a *App) updateHistory(t time.Time, servers []ServerEntry) error {
return a.store.SaveServerHistory(history) return a.store.SaveServerHistory(history)
} }
func (a *App) updateOldServers(t time.Time, servers []ServerEntry) error { func (a *App) updateOldServers(t time.Time) error {
var old []ServerEntry servers, err := a.store.GetServers()
for _, s := range servers { if err != nil {
if !s.Time.Equal(t) { return err
s.Players = 0
old = append(old, s)
}
} }
var remove []ServerEntry var remove []ServerEntry
for index, s := range old { var update []ServerEntry
for _, s := range servers {
delta := t.Sub(s.Time) delta := t.Sub(s.Time)
if delta.Hours() > 24*1 { // TODO: CHANGE TO A WEEK AFTER TESTING switch {
case delta.Hours() > oldServerTimeout:
remove = append(remove, s) remove = append(remove, s)
old = append(old[:index], old[index+1:]...) case !s.Time.Equal(t):
s.Players = 0
update = append(update, s)
} }
} }
@ -155,9 +160,9 @@ func (a *App) updateOldServers(t time.Time, servers []ServerEntry) error {
} }
} }
if len(old) > 0 { if len(update) > 0 {
a.Log("Old servers: %s", serverNameList(old)) // TODO: remove after testing a.Log("Old servers: %s", serverNameList(update)) // TODO: remove after testing?
if err := a.updateHistory(t, old); err != nil { if err := a.updateHistory(t, update); err != nil {
return err return err
} }
} }