2025-05-23 18:58:03 +08:00
|
|
|
package services
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
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) {
|
2025-05-24 12:37:16 +08:00
|
|
|
do := q.Edge.Where()
|
2025-11-24 18:44:06 +08:00
|
|
|
if filter.Prov != nil {
|
|
|
|
|
do = do.Where(q.Edge.Prov.Eq(*filter.Prov))
|
2025-05-23 18:58:03 +08:00
|
|
|
}
|
2025-11-24 18:44:06 +08:00
|
|
|
if filter.City != nil {
|
|
|
|
|
do = do.Where(q.Edge.City.Eq(*filter.City))
|
2025-05-23 18:58:03 +08:00
|
|
|
}
|
2025-11-24 18:44:06 +08:00
|
|
|
if filter.Isp != nil {
|
|
|
|
|
do = do.Where(q.Edge.ISP.Eq(int(*filter.Isp)))
|
2025-05-23 18:58:03 +08:00
|
|
|
}
|
|
|
|
|
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 {
|
2025-11-24 18:44:06 +08:00
|
|
|
Isp *m.EdgeISP `json:"isp"`
|
|
|
|
|
Prov *string `json:"prov"`
|
|
|
|
|
City *string `json:"city"`
|
2025-05-23 18:58:03 +08:00
|
|
|
}
|