This repository has been archived by the owner on Nov 23, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
getChartsInfoHandler.go
99 lines (80 loc) · 2.81 KB
/
getChartsInfoHandler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package api
import (
"fmt"
"github.com/everstake/teztracker/api/render"
info "github.com/everstake/teztracker/gen/restapi/operations/app_info"
"github.com/everstake/teztracker/repos"
"github.com/everstake/teztracker/services"
"github.com/go-openapi/runtime/middleware"
"github.com/go-openapi/validate"
"github.com/sirupsen/logrus"
"strings"
)
type getChartsInfoHandler struct {
provider DbProvider
}
func (h *getChartsInfoHandler) Handle(params info.GetChartsInfoParams) middleware.Responder {
net, err := ToNetwork(params.Network)
if err != nil {
return info.NewGetChartsInfoBadRequest()
}
db, err := h.provider.GetDb(net)
if err != nil {
return info.NewGetChartsInfoBadRequest()
}
service := services.New(repos.New(db), net)
var columns []string
for key := range params.Columns {
columns = append(columns, strings.Split(params.Columns[key], ",")...)
}
for key := range columns {
if err := validate.Enum(fmt.Sprintf("%s.%v", "column", key), "query", columns[key], []interface{}{"blocks", "volume", "operations", "avg_block_delay", "fees", "activations", "delegation_volume", "bakers", "blocks_priority", "whale_accounts"}); err != nil {
return info.NewGetChartsInfoBadRequest()
}
}
chartData, err := service.GetChartsInfo(params.From, params.To, params.Period, params.Columns)
if err != nil {
logrus.Errorf("failed to get charts data: %s", err.Error())
}
return info.NewGetChartsInfoOK().WithPayload(render.ChartData(chartData))
}
type getBakerChartHandler struct {
provider DbProvider
}
func (h *getBakerChartHandler) Handle(params info.GetBakerChartInfoParams) middleware.Responder {
net, err := ToNetwork(params.Network)
if err != nil {
return info.NewGetBakerChartInfoBadRequest()
}
db, err := h.provider.GetDb(net)
if err != nil {
return info.NewGetBakerChartInfoBadRequest()
}
limiter := NewLimiter(params.Limit, nil)
service := services.New(repos.New(db), net)
data, err := service.GetBakerChartInfo(limiter)
if err != nil {
return info.NewGetBakerChartInfoInternalServerError()
}
return info.NewGetBakerChartInfoOK().WithPayload(render.BakerChartData(data))
}
type getBlocksPriorityHandler struct {
provider DbProvider
}
func (h *getBlocksPriorityHandler) Handle(params info.GetBlocksPriorityChartInfoParams) middleware.Responder {
net, err := ToNetwork(params.Network)
if err != nil {
return info.NewGetBlocksPriorityChartInfoBadRequest()
}
db, err := h.provider.GetDb(net)
if err != nil {
return info.NewGetBlocksPriorityChartInfoBadRequest()
}
limiter := NewLimiter(params.Limit, nil)
service := services.New(repos.New(db), net)
data, err := service.GetBlocksPriorityByCycle(limiter)
if err != nil {
return info.NewGetBlocksPriorityChartInfoInternalServerError()
}
return info.NewGetBlocksPriorityChartInfoOK().WithPayload(render.BlocksPriorityChartData(data))
}