package services import ( "platform/pkg/u" m "platform/web/models" q "platform/web/queries" ) var Edge = &edgeService{} type edgeService struct{} func (s *edgeService) AllEdges(count int, filter EdgeFilter) ([]*m.Edge, error) { do := q.Edge.Where(q.Edge.Type.Eq(int(m.EdgeTypeSelfBuilt))) if prov := u.N(filter.Prov); prov != nil { do = do.Where(q.Edge.Prov.Eq(*prov)) } if city := u.N(filter.City); city != nil { do = do.Where(q.Edge.City.Eq(*city)) } if isp := u.X(filter.Isp.String()); isp != nil { do = do.Where(q.Edge.ISP.Eq(int(*filter.Isp))) } if count > 0 { do = do.Limit(count) } edges, err := q.Edge.Where(do).Find() if err != nil { return nil, err } return edges, nil } type EdgeFilter struct { Isp *m.EdgeISP `json:"isp"` Prov *string `json:"prov"` City *string `json:"city"` } func (f *EdgeFilter) IsEmpty() bool { if f == nil { return true } return u.X(f.Isp.String()) == nil && u.N(f.Prov) == nil && u.N(f.City) == nil }