diff options
Diffstat (limited to 'src/hub/src/spreadspace.org/sfive/s5store.go')
-rw-r--r-- | src/hub/src/spreadspace.org/sfive/s5store.go | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/src/hub/src/spreadspace.org/sfive/s5store.go b/src/hub/src/spreadspace.org/sfive/s5store.go index 49b70de..24e9ae6 100644 --- a/src/hub/src/spreadspace.org/sfive/s5store.go +++ b/src/hub/src/spreadspace.org/sfive/s5store.go @@ -2,6 +2,7 @@ package sfive import ( "database/sql" + "time" //"time" _ "github.com/mattn/go-sqlite3" @@ -395,14 +396,48 @@ type statsResult struct { LastStartTime *int64 } -func (s sqliteStore) GetStats(filter *StatsFilter) (statsResult, error) { // (map[string]interface{}, error) { +type StatsResult struct { + UpdateCount int + ClientCount float32 + BytesSent uint + BytesReceived uint + StartTime time.Time + LastStartTime time.Time +} + +func toApiStatsResult(value statsResult) (res StatsResult) { + if value.UpdateCount != nil { + res.UpdateCount = *value.UpdateCount + } + if value.ClientCount != nil { + res.ClientCount = *value.ClientCount + } + if value.BytesSent != nil { + res.BytesSent = *value.BytesSent + } + if value.BytesReceived != nil { + res.BytesReceived = *value.BytesReceived + } + if value.StartTime != nil { + res.StartTime = time.Unix(*value.StartTime, 0) + } + if value.LastStartTime != nil { + res.LastStartTime = time.Unix(*value.LastStartTime, 0) + } + return res +} + +func (s sqliteStore) GetStats(filter *StatsFilter) (StatsResult, error) { // (map[string]interface{}, error) { sourceSql, parameters := getFilteredDataUpdateSelect(filter) _ = sourceSql sql := "select " + getCountEntriesSql() + "," + getClientCountSql() + "," + getBpsStatsSql() + " from " + sourceSql - s5l.Printf("stats sql: %v", sql) + // s5l.Printf("stats sql: %v", sql) res := statsResult{} err := s.db.SelectOne(&res, sql, parameters) - return res, err + if err == nil { + return toApiStatsResult(res), nil + } + return StatsResult{}, err } func NewStore(path string) (store sqliteStore, err error) { |