Der Umstieg auf Sessions ist weitgehend geglückt
This commit is contained in:
		@@ -120,7 +120,7 @@ func (db *DB) WriteParticipant(p *types.Participant) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (db *DB) WriteGivenAnswer(b *types.Briefing, p *types.Participant, q *types.Question, g *types.GivenAnswer) error {
 | 
			
		||||
func (db *DB) WriteGivenAnswer(b *types.Briefing, p *types.Participant, q *types.Question, g int) error {
 | 
			
		||||
	_, err := db.Exec(`
 | 
			
		||||
  INSERT INTO given_answers
 | 
			
		||||
  	(briefing_id, participant_id, question_id, given_answer)
 | 
			
		||||
@@ -147,7 +147,7 @@ func (db *DB) WriteAllDataOfBriefing(b *types.Briefing, sp *[]*types.Participant
 | 
			
		||||
 | 
			
		||||
	for _, p := range *sp {
 | 
			
		||||
		for i, q := range *sq {
 | 
			
		||||
			db.WriteGivenAnswer(b, p, q, (*sg)[i])
 | 
			
		||||
			db.WriteGivenAnswer(b, p, q, i)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -302,11 +302,12 @@ func (db *DB) GetInstructors() ([]*types.Instructor, error) {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("*DB.GetInstructors: db.Query(): %v\n", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer rows.Close()
 | 
			
		||||
 | 
			
		||||
	instructors := make([]*types.Instructor, 0)
 | 
			
		||||
	for rows.Next() {
 | 
			
		||||
		instructor := new(types.Instructor)
 | 
			
		||||
		if err = rows.Scan(&instructor.ID, &instructor.FirstName, &instructor.LastName, &instructor.PersonnelID); err != nil {
 | 
			
		||||
		if err = rows.Scan(&instructor.ID, &instructor.FirstName, &instructor.LastName); err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("*DB.GetInstructors: rows.Scan(): %v\n", err)
 | 
			
		||||
		}
 | 
			
		||||
		instructors = append(instructors, instructor)
 | 
			
		||||
@@ -314,3 +315,67 @@ func (db *DB) GetInstructors() ([]*types.Instructor, error) {
 | 
			
		||||
 | 
			
		||||
	return instructors, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (db *DB) GetQuestions(nums []string) ([]types.Question, error) {
 | 
			
		||||
	rows, err := db.Query(`
 | 
			
		||||
  SELECT *
 | 
			
		||||
  FROM questions
 | 
			
		||||
  WHERE id IN (` + strings.Join(nums, ", ") + `)
 | 
			
		||||
  `)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("*DB.GetQuestions: db.Query(): %v\n", err)
 | 
			
		||||
	}
 | 
			
		||||
	defer rows.Close()
 | 
			
		||||
 | 
			
		||||
	questions := make([]types.Question, 0)
 | 
			
		||||
	for rows.Next() {
 | 
			
		||||
		q := new(types.Question)
 | 
			
		||||
		a1 := new(types.Answer)
 | 
			
		||||
		a2 := new(types.Answer)
 | 
			
		||||
		a3 := new(types.Answer)
 | 
			
		||||
		a4 := new(types.Answer)
 | 
			
		||||
 | 
			
		||||
		a1.ID = 1
 | 
			
		||||
		a2.ID = 2
 | 
			
		||||
		a3.ID = 3
 | 
			
		||||
		a4.ID = 4
 | 
			
		||||
 | 
			
		||||
		if err := rows.Scan(&q.ID, &q.Text, &a1.Text, &a2.Text, &a3.Text, &a4.Text, &q.Correct); err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("*DB.GetQuestions: rows.Scan(): %v\n", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		q.Answers = append(q.Answers, *a1)
 | 
			
		||||
		q.Answers = append(q.Answers, *a2)
 | 
			
		||||
		q.Answers = append(q.Answers, *a3)
 | 
			
		||||
		q.Answers = append(q.Answers, *a4)
 | 
			
		||||
 | 
			
		||||
		questions = append(questions, *q)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return questions, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (db *DB) GetGivenAnswers(bid, pid int64, sq []types.Question) ([]int, error) {
 | 
			
		||||
	answers := make([]int, 0)
 | 
			
		||||
	query := `
 | 
			
		||||
  SELECT given_answer
 | 
			
		||||
  FROM given_answers
 | 
			
		||||
  WHERE
 | 
			
		||||
    briefing_id = ? AND
 | 
			
		||||
    participant_id = ? AND
 | 
			
		||||
    question_id = ?
 | 
			
		||||
  `
 | 
			
		||||
 | 
			
		||||
	for _, q := range sq {
 | 
			
		||||
		var answer int
 | 
			
		||||
 | 
			
		||||
		row := db.QueryRow(query, bid, pid, q.ID)
 | 
			
		||||
		if err := row.Scan(&answer); err != nil {
 | 
			
		||||
			return nil, fmt.Errorf("*DB.GetGivenAnswers: row.Scan(): %v\n", err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		answers = append(answers, answer)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return answers, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user