package status import ( "errors" "git.0x7f.app/WOJ/woj-server/internal/e" "git.0x7f.app/WOJ/woj-server/internal/model" "go.uber.org/zap" "gorm.io/gorm" "gorm.io/gorm/clause" ) func (s *service) Query(sid uint, associations bool) (*model.Status, e.Status) { status := &model.Status{ SubmissionID: sid, IsEnabled: true, } query := s.db.Get() if associations { query = query. Preload("Submission.Problem"). Preload("Submission.User"). Preload(clause.Associations) } err := query. Where(status). Last(&status).Error if errors.Is(err, gorm.ErrRecordNotFound) { return nil, e.StatusNotFound } if err != nil { s.log.Warn("DatabaseError", zap.Error(err), zap.Any("status", status)) return nil, e.DatabaseError } return status, e.Success } func (s *service) QueryByVersion(pvid uint, offset int, limit int, count *int64) ([]*model.Status, e.Status) { var ret []*model.Status status := &model.Status{ ProblemVersionID: pvid, IsEnabled: true, } err := s.db.Get(). Preload("Submission.Problem").Preload("Submission.User").Preload(clause.Associations). Where(status). Order("created_at DESC"). Offset(offset).Limit(limit).Find(&ret). Offset(-1).Limit(-1).Count(count). Error if err != nil { s.log.Warn("DatabaseError", zap.Error(err), zap.Any("status", status)) return nil, e.DatabaseError } return ret, e.Success }