44 lines
788 B
Go
44 lines
788 B
Go
package services
|
|
|
|
import (
|
|
edge2 "platform/web/domains/edge"
|
|
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()
|
|
if filter.Prov != "" {
|
|
do = do.Where(q.Edge.Prov.Eq(filter.Prov))
|
|
}
|
|
if filter.City != "" {
|
|
do = do.Where(q.Edge.City.Eq(filter.City))
|
|
}
|
|
if filter.Isp != "" {
|
|
do = do.Where(q.Edge.Isp.Eq(int32(edge2.ISPFromStr(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 EdgeInfo struct {
|
|
}
|
|
|
|
type EdgeFilter struct {
|
|
Isp string `json:"isp"`
|
|
Prov string `json:"prov"`
|
|
City string `json:"city"`
|
|
}
|