feat: speedtest 网速测试服务(Go+Gin+SQLite,延迟/下载/上传 + 排行榜)

This commit is contained in:
dsh
2026-08-17 09:32:05 -04:00
commit 3b48eea5d1
15 changed files with 1855 additions and 0 deletions
+50
View File
@@ -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
}