9 "github.com/vapor/toolbar/precog/common"
13 ID uint16 `gorm:"primary_key"`
20 AvgLantencyMS sql.NullInt64
21 LatestDailyUptimeMinutes uint64
23 CreatedAt time.Time `json:"alias"`
24 UpdatedAt time.Time `json:"alias"`
27 func (n *Node) MarshalJSON() ([]byte, error) {
28 status, ok := common.StatusLookupTable[n.Status]
30 return nil, errors.New("fail to look up status")
34 if n.AvgLantencyMS.Valid {
35 avgLantencyMS = n.AvgLantencyMS.Int64
38 return json.Marshal(&struct {
39 Alias string `json:"alias"`
40 PublicKey string `json:"publickey"`
41 Address string `json:"address"`
42 BestHeight uint64 `json:"best_height"`
43 AvgLantencyMS int64 `json:"avg_lantency_ms"`
44 LatestDailyUptimeMinutes uint64 `json:"latest_daily_uptime_minutes"`
45 Status string `json:"status"`
46 UpdatedAt time.Time `json:"updated_at"`
49 PublicKey: n.PublicKey,
50 Address: fmt.Sprintf("%s:%d", n.IP, n.Port),
51 BestHeight: n.BestHeight,
52 AvgLantencyMS: avgLantencyMS,
53 LatestDailyUptimeMinutes: n.LatestDailyUptimeMinutes,
55 UpdatedAt: time.Now(),