package problem 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(data *QueryData) (*model.Problem, e.Status) { problem := new(model.Problem) query := s.db.Get() if data.Associations { query = query.Preload(clause.Associations) } err := query.First(&problem, data.ID).Error if errors.Is(err, gorm.ErrRecordNotFound) { return nil, e.ProblemNotFound } if err != nil { s.log.Warn("DatabaseError", zap.Error(err), zap.Any("pid", data.ID)) return nil, e.DatabaseError } if data.ShouldEnable && !problem.IsEnabled { return nil, e.ProblemNotAvailable } return problem, e.Success }