feat: speedtest 网速测试服务(Go+Gin+SQLite,延迟/下载/上传 + 排行榜)
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"speedtest/internal/db"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// ResultStore 测速结果数据访问层
|
||||
type ResultStore struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewResultStore creates a new ResultStore.
|
||||
func NewResultStore(database *gorm.DB) *ResultStore {
|
||||
return &ResultStore{db: database}
|
||||
}
|
||||
|
||||
// Create 保存一次测速结果
|
||||
func (s *ResultStore) Create(r *db.SpeedTestResult) error {
|
||||
return s.db.Create(r).Error
|
||||
}
|
||||
|
||||
// TopDownload 返回下载速度最快的 n 条记录
|
||||
func (s *ResultStore) TopDownload(n int) ([]db.SpeedTestResult, error) {
|
||||
var results []db.SpeedTestResult
|
||||
err := s.db.Order("download_mbps DESC").Limit(n).Find(&results).Error
|
||||
return results, err
|
||||
}
|
||||
|
||||
// TopUpload 返回上传速度最快的 n 条记录
|
||||
func (s *ResultStore) TopUpload(n int) ([]db.SpeedTestResult, error) {
|
||||
var results []db.SpeedTestResult
|
||||
err := s.db.Order("upload_mbps DESC").Limit(n).Find(&results).Error
|
||||
return results, err
|
||||
}
|
||||
|
||||
// TopLatency 返回延迟最低的 n 条记录
|
||||
func (s *ResultStore) TopLatency(n int) ([]db.SpeedTestResult, error) {
|
||||
var results []db.SpeedTestResult
|
||||
err := s.db.Order("latency_ms ASC").Limit(n).Find(&results).Error
|
||||
return results, err
|
||||
}
|
||||
|
||||
// Count 返回测速总次数
|
||||
func (s *ResultStore) Count() (int64, error) {
|
||||
var total int64
|
||||
err := s.db.Model(&db.SpeedTestResult{}).Count(&total).Error
|
||||
return total, err
|
||||
}
|
||||
Reference in New Issue
Block a user