// Copyright (C) 2021 Marius Schellenberger package server import ( "errors" "git.giftfish.de/ston1th/gowiki/pkg/core" bleve "git.giftfish.de/ston1th/gowiki/pkg/index" "runtime" "strconv" "time" ) const ( day = time.Hour * 24 min = time.Second * 30 max = day * 90 div = 1048576 ) func duration(duration, mode string) (d time.Duration, err error) { switch mode { case "1": d, err = time.ParseDuration(duration) if err != nil { err = errors.New("could not parse duration") return } case "2": var t int t, err = strconv.Atoi(duration) if err != nil { err = errors.New("could not parse duration") return } d = time.Duration(int(day) * t) default: err = errors.New("invalid mode") return } if d < min { err = errors.New("minimum duration is 30 seconds") } if d > max { err = errors.New("maximum duration is 90 days") } return } func fmtMem(i uint64) string { return strconv.FormatFloat(float64(i)/div, 'f', 2, 64) } func getStats(i *bleve.Index) *core.Stats { mem := new(runtime.MemStats) runtime.ReadMemStats(mem) return &core.Stats{ Goroutines: runtime.NumGoroutine(), Alloc: fmtMem(mem.Alloc), Sys: fmtMem(mem.Sys), Docs: i.DocCount(), GoVersion: runtime.Version(), } }