Correctly update/remove old servers
This commit is contained in:
parent
484477daab
commit
ae58539a4b
37
main.go
37
main.go
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user