statping/database/group.go

48 lines
1007 B
Go
Raw Normal View History

2020-02-22 23:52:05 +00:00
package database
2020-02-24 16:26:01 +00:00
import "github.com/hunterlong/statping/types"
2020-02-22 23:52:05 +00:00
2020-02-24 16:26:01 +00:00
type GroupObj struct {
*types.Group
2020-02-25 07:41:28 +00:00
o *Object
Grouper
2020-02-22 23:52:05 +00:00
}
2020-02-24 16:26:01 +00:00
type Grouper interface {
2020-02-25 07:41:28 +00:00
Services() []*types.Service
Model() *types.Group
2020-02-22 23:52:05 +00:00
}
2020-02-25 07:41:28 +00:00
func AllGroups() []*GroupObj {
var groups []*types.Group
query := database.Groups()
query.Find(&groups)
return wrapGroups(groups, query)
2020-02-24 05:53:15 +00:00
}
2020-02-25 07:41:28 +00:00
func (g *Db) GetGroup(id int64) (*GroupObj, error) {
2020-02-24 16:26:01 +00:00
var group types.Group
2020-02-25 07:41:28 +00:00
query := database.Groups().Where("id = ?", id)
finder := query.Find(&group)
return &GroupObj{Group: &group, o: wrapObject(id, &group, query)}, finder.Error()
}
func (g *GroupObj) Services() []*types.Service {
var services []*types.Service
database.Services().Where("group = ?", g.Id).Find(&services)
return services
}
func (g *GroupObj) Model() *types.Group {
return g.Group
2020-02-24 05:53:15 +00:00
}
2020-02-25 07:41:28 +00:00
func wrapGroups(all []*types.Group, db Database) []*GroupObj {
var arr []*GroupObj
for _, v := range all {
arr = append(arr, &GroupObj{Group: v, o: wrapObject(v.Id, v, db)})
}
return arr
2020-02-22 23:52:05 +00:00
}