fyp/logic/stats/PublicStats.go

45 lines
1.4 KiB
Go

package stats
import (
"time"
. "git.andr3h3nriqu3s.com/andr3/fyp/logic/db_types"
. "git.andr3h3nriqu3s.com/andr3/fyp/logic/tasks/utils"
. "git.andr3h3nriqu3s.com/andr3/fyp/logic/utils"
)
func HandlePublicStats(handle *Handle) {
handle.Post("/stats/public/main", func(c *Context) *Error {
if handle.DataMap["PublicMainLastUpdate"] != nil && handle.DataMap["PublicMainLastUpdate"].(int64) > time.Now().UnixMilli() {
c.ShowMessage = false
return c.SendJSON(handle.DataMap["PublicMain"])
}
number_of_models, err := GetDbVar[int](c, "count(*)", "models")
if err != nil {
return c.E500M("Could not get statistics", err)
}
number_of_classfications, err := GetDbVar[int](c, "count(*)", "tasks where task_type=$1", TASK_TYPE_CLASSIFICATION)
if err != nil {
return c.E500M("Could not get statistics", err)
}
number_of_images_processed, err := GetDbVar[int](c, "count(*)", "model_data_point")
if err != nil {
return c.E500M("Could not get statistics", err)
}
handle.DataMap["PublicMainLastUpdate"] = time.Now().UnixNano() + 60*60*1000*1000
handle.DataMap["PublicMain"] = struct {
NumberOfModels int `json:"number_of_models"`
NumberOfClassfications int `json:"number_of_classfications"`
NumberOfImagesProcessed int `json:"number_of_images_processed"`
}{
*number_of_models,
*number_of_classfications,
*number_of_images_processed,
}
c.ShowMessage = false
return c.SendJSON(handle.DataMap["PublicMain"])
})
}