package model import ( "code.electrolab.fr/it/vote.electrolab.fr/service/db" "context" "fmt" "math/rand" "time" ) type Answer struct { QuestionName string Name string Position int Checked bool Sentence string VoteCount int } func FetchAnswers(ctx context.Context, db db.Service, questionName string) ([]*Answer, error) { var result []*Answer q := ` SELECT question_name, name, position, checked, sentence, vote_count FROM answers WHERE question_name = $1 ` rows, err := db.QueryContext(ctx, q, questionName) if err != nil { return nil, fmt.Errorf("Error fetching answers: %w", err) } defer rows.Close() for rows.Next() { answer := new(Answer) err = rows.Scan( &answer.QuestionName, &answer.Name, &answer.Position, &answer.Checked, &answer.Sentence, &answer.VoteCount, ) if err != nil { return nil, fmt.Errorf("Error fetching answers: %w", err) } result = append(result, answer) } return result, nil } // Pseudorandom shuffle to prevent order bias in answers func ShuffleAnswers(answers []*Answer) { rnd := rand.New(rand.NewSource(time.Now().UnixNano())) for i := len(answers) - 1; i > 0; i-- { j := rnd.Intn(i + 1) answers[i], answers[j] = answers[j], answers[i] } }