statping/database/group.go

48 lines
1007 B
Go

package database
import "github.com/hunterlong/statping/types"
type GroupObj struct {
*types.Group
o *Object
Grouper
}
type Grouper interface {
Services() []*types.Service
Model() *types.Group
}
func AllGroups() []*GroupObj {
var groups []*types.Group
query := database.Groups()
query.Find(&groups)
return wrapGroups(groups, query)
}
func (g *Db) GetGroup(id int64) (*GroupObj, error) {
var group types.Group
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
}
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
}