/
chart_group.go
80 lines (64 loc) · 1.7 KB
/
chart_group.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
package models
import (
"github.com/pkg/errors"
"github.com/toolkits/pkg/str"
"gorm.io/gorm"
)
type ChartGroup struct {
Id int64 `json:"id" gorm:"primaryKey"`
DashboardId int64 `json:"dashboard_id"`
Name string `json:"name"`
Weight int `json:"weight"`
}
func (cg *ChartGroup) TableName() string {
return "chart_group"
}
func (cg *ChartGroup) Verify() error {
if cg.DashboardId <= 0 {
return errors.New("Arg(dashboard_id) invalid")
}
if str.Dangerous(cg.Name) {
return errors.New("Name has invalid characters")
}
return nil
}
func (cg *ChartGroup) Add() error {
if err := cg.Verify(); err != nil {
return err
}
return Insert(cg)
}
func (cg *ChartGroup) Update(selectField interface{}, selectFields ...interface{}) error {
if err := cg.Verify(); err != nil {
return err
}
return DB().Model(cg).Select(selectField, selectFields...).Updates(cg).Error
}
func (cg *ChartGroup) Del() error {
return DB().Transaction(func(tx *gorm.DB) error {
if err := tx.Where("group_id=?", cg.Id).Delete(&Chart{}).Error; err != nil {
return err
}
if err := tx.Where("id=?", cg.Id).Delete(&ChartGroup{}).Error; err != nil {
return err
}
return nil
})
}
func NewDefaultChartGroup(dashId int64) error {
return Insert(&ChartGroup{
DashboardId: dashId,
Name: "Default chart group",
Weight: 0,
})
}
func ChartGroupIdsOf(dashId int64) ([]int64, error) {
var ids []int64
err := DB().Model(&ChartGroup{}).Where("dashboard_id = ?", dashId).Pluck("id", &ids).Error
return ids, err
}
func ChartGroupsOf(dashId int64) ([]ChartGroup, error) {
var objs []ChartGroup
err := DB().Where("dashboard_id = ?", dashId).Order("weight").Find(&objs).Error
return objs, err
}