fix: return sample_answer_voice_prompt and audio_correct_answer_text in question set items list

Extend GetQuestionSetItems and GetPublishedQuestionsInSet queries to match
paginated fields; map audio answer join in repository instead of nils.

Made-with: Cursor
This commit is contained in:
Yared Yemane 2026-04-24 03:11:47 -07:00
parent 33d34f0dd2
commit bc68326a66
3 changed files with 71 additions and 49 deletions

View File

@ -21,10 +21,13 @@ SELECT
q.explanation,
q.tips,
q.voice_prompt,
q.sample_answer_voice_prompt,
q.image_url,
q.status as question_status
q.status as question_status,
qaa.correct_answer_text AS audio_correct_answer_text
FROM question_set_items qsi
JOIN questions q ON q.id = qsi.question_id
LEFT JOIN question_audio_answers qaa ON qaa.question_id = q.id
WHERE qsi.set_id = $1
AND q.status != 'ARCHIVED'
ORDER BY qsi.display_order;
@ -70,9 +73,12 @@ SELECT
q.explanation,
q.tips,
q.voice_prompt,
q.image_url
q.sample_answer_voice_prompt,
q.image_url,
qaa.correct_answer_text AS audio_correct_answer_text
FROM question_set_items qsi
JOIN questions q ON q.id = qsi.question_id
LEFT JOIN question_audio_answers qaa ON qaa.question_id = q.id
WHERE qsi.set_id = $1
AND q.status = 'PUBLISHED'
ORDER BY qsi.display_order;

View File

@ -69,9 +69,12 @@ SELECT
q.explanation,
q.tips,
q.voice_prompt,
q.image_url
q.sample_answer_voice_prompt,
q.image_url,
qaa.correct_answer_text AS audio_correct_answer_text
FROM question_set_items qsi
JOIN questions q ON q.id = qsi.question_id
LEFT JOIN question_audio_answers qaa ON qaa.question_id = q.id
WHERE qsi.set_id = $1
AND q.status = 'PUBLISHED'
ORDER BY qsi.display_order
@ -89,7 +92,9 @@ type GetPublishedQuestionsInSetRow struct {
Explanation pgtype.Text `json:"explanation"`
Tips pgtype.Text `json:"tips"`
VoicePrompt pgtype.Text `json:"voice_prompt"`
SampleAnswerVoicePrompt pgtype.Text `json:"sample_answer_voice_prompt"`
ImageUrl pgtype.Text `json:"image_url"`
AudioCorrectAnswerText pgtype.Text `json:"audio_correct_answer_text"`
}
func (q *Queries) GetPublishedQuestionsInSet(ctx context.Context, setID int64) ([]GetPublishedQuestionsInSetRow, error) {
@ -113,7 +118,9 @@ func (q *Queries) GetPublishedQuestionsInSet(ctx context.Context, setID int64) (
&i.Explanation,
&i.Tips,
&i.VoicePrompt,
&i.SampleAnswerVoicePrompt,
&i.ImageUrl,
&i.AudioCorrectAnswerText,
); err != nil {
return nil, err
}
@ -138,10 +145,13 @@ SELECT
q.explanation,
q.tips,
q.voice_prompt,
q.sample_answer_voice_prompt,
q.image_url,
q.status as question_status
q.status as question_status,
qaa.correct_answer_text AS audio_correct_answer_text
FROM question_set_items qsi
JOIN questions q ON q.id = qsi.question_id
LEFT JOIN question_audio_answers qaa ON qaa.question_id = q.id
WHERE qsi.set_id = $1
AND q.status != 'ARCHIVED'
ORDER BY qsi.display_order
@ -159,8 +169,10 @@ type GetQuestionSetItemsRow struct {
Explanation pgtype.Text `json:"explanation"`
Tips pgtype.Text `json:"tips"`
VoicePrompt pgtype.Text `json:"voice_prompt"`
SampleAnswerVoicePrompt pgtype.Text `json:"sample_answer_voice_prompt"`
ImageUrl pgtype.Text `json:"image_url"`
QuestionStatus string `json:"question_status"`
AudioCorrectAnswerText pgtype.Text `json:"audio_correct_answer_text"`
}
func (q *Queries) GetQuestionSetItems(ctx context.Context, setID int64) ([]GetQuestionSetItemsRow, error) {
@ -184,8 +196,10 @@ func (q *Queries) GetQuestionSetItems(ctx context.Context, setID int64) ([]GetQu
&i.Explanation,
&i.Tips,
&i.VoicePrompt,
&i.SampleAnswerVoicePrompt,
&i.ImageUrl,
&i.QuestionStatus,
&i.AudioCorrectAnswerText,
); err != nil {
return nil, err
}

View File

@ -731,9 +731,9 @@ func (s *Store) GetQuestionSetItems(ctx context.Context, setID int64) ([]domain.
Explanation: fromPgText(r.Explanation),
Tips: fromPgText(r.Tips),
VoicePrompt: fromPgText(r.VoicePrompt),
SampleAnswerVoicePrompt: nil,
SampleAnswerVoicePrompt: fromPgText(r.SampleAnswerVoicePrompt),
ImageURL: fromPgText(r.ImageUrl),
AudioCorrectAnswerText: nil,
AudioCorrectAnswerText: fromPgText(r.AudioCorrectAnswerText),
QuestionStatus: r.QuestionStatus,
}
}
@ -806,7 +806,9 @@ func (s *Store) GetPublishedQuestionsInSet(ctx context.Context, setID int64) ([]
Explanation: fromPgText(r.Explanation),
Tips: fromPgText(r.Tips),
VoicePrompt: fromPgText(r.VoicePrompt),
SampleAnswerVoicePrompt: fromPgText(r.SampleAnswerVoicePrompt),
ImageURL: fromPgText(r.ImageUrl),
AudioCorrectAnswerText: fromPgText(r.AudioCorrectAnswerText),
QuestionStatus: "PUBLISHED",
}
}