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 }