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
|
|
|
}
|