275 lines
7.1 KiB
Go
275 lines
7.1 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.30.0
|
|
// source: question_set_items.sql
|
|
|
|
package dbgen
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
const AddQuestionToSet = `-- name: AddQuestionToSet :one
|
|
INSERT INTO question_set_items (
|
|
set_id,
|
|
question_id,
|
|
display_order
|
|
)
|
|
VALUES ($1, $2, COALESCE($3, 0))
|
|
ON CONFLICT (set_id, question_id) DO UPDATE SET display_order = EXCLUDED.display_order
|
|
RETURNING id, set_id, question_id, display_order, created_at
|
|
`
|
|
|
|
type AddQuestionToSetParams struct {
|
|
SetID int64 `json:"set_id"`
|
|
QuestionID int64 `json:"question_id"`
|
|
Column3 interface{} `json:"column_3"`
|
|
}
|
|
|
|
func (q *Queries) AddQuestionToSet(ctx context.Context, arg AddQuestionToSetParams) (QuestionSetItem, error) {
|
|
row := q.db.QueryRow(ctx, AddQuestionToSet, arg.SetID, arg.QuestionID, arg.Column3)
|
|
var i QuestionSetItem
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.SetID,
|
|
&i.QuestionID,
|
|
&i.DisplayOrder,
|
|
&i.CreatedAt,
|
|
)
|
|
return i, err
|
|
}
|
|
|
|
const CountQuestionsInSet = `-- name: CountQuestionsInSet :one
|
|
SELECT COUNT(*) as count
|
|
FROM question_set_items qsi
|
|
JOIN questions q ON q.id = qsi.question_id
|
|
WHERE qsi.set_id = $1
|
|
AND q.status != 'ARCHIVED'
|
|
`
|
|
|
|
func (q *Queries) CountQuestionsInSet(ctx context.Context, setID int64) (int64, error) {
|
|
row := q.db.QueryRow(ctx, CountQuestionsInSet, setID)
|
|
var count int64
|
|
err := row.Scan(&count)
|
|
return count, err
|
|
}
|
|
|
|
const GetPublishedQuestionsInSet = `-- name: GetPublishedQuestionsInSet :many
|
|
SELECT
|
|
qsi.id,
|
|
qsi.set_id,
|
|
qsi.question_id,
|
|
qsi.display_order,
|
|
q.question_text,
|
|
q.question_type,
|
|
q.difficulty_level,
|
|
q.points,
|
|
q.explanation,
|
|
q.tips,
|
|
q.voice_prompt,
|
|
q.image_url
|
|
FROM question_set_items qsi
|
|
JOIN questions q ON q.id = qsi.question_id
|
|
WHERE qsi.set_id = $1
|
|
AND q.status = 'PUBLISHED'
|
|
ORDER BY qsi.display_order
|
|
`
|
|
|
|
type GetPublishedQuestionsInSetRow struct {
|
|
ID int64 `json:"id"`
|
|
SetID int64 `json:"set_id"`
|
|
QuestionID int64 `json:"question_id"`
|
|
DisplayOrder int32 `json:"display_order"`
|
|
QuestionText string `json:"question_text"`
|
|
QuestionType string `json:"question_type"`
|
|
DifficultyLevel pgtype.Text `json:"difficulty_level"`
|
|
Points int32 `json:"points"`
|
|
Explanation pgtype.Text `json:"explanation"`
|
|
Tips pgtype.Text `json:"tips"`
|
|
VoicePrompt pgtype.Text `json:"voice_prompt"`
|
|
ImageUrl pgtype.Text `json:"image_url"`
|
|
}
|
|
|
|
func (q *Queries) GetPublishedQuestionsInSet(ctx context.Context, setID int64) ([]GetPublishedQuestionsInSetRow, error) {
|
|
rows, err := q.db.Query(ctx, GetPublishedQuestionsInSet, setID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []GetPublishedQuestionsInSetRow
|
|
for rows.Next() {
|
|
var i GetPublishedQuestionsInSetRow
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.SetID,
|
|
&i.QuestionID,
|
|
&i.DisplayOrder,
|
|
&i.QuestionText,
|
|
&i.QuestionType,
|
|
&i.DifficultyLevel,
|
|
&i.Points,
|
|
&i.Explanation,
|
|
&i.Tips,
|
|
&i.VoicePrompt,
|
|
&i.ImageUrl,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const GetQuestionSetItems = `-- name: GetQuestionSetItems :many
|
|
SELECT
|
|
qsi.id,
|
|
qsi.set_id,
|
|
qsi.question_id,
|
|
qsi.display_order,
|
|
q.question_text,
|
|
q.question_type,
|
|
q.difficulty_level,
|
|
q.points,
|
|
q.explanation,
|
|
q.tips,
|
|
q.voice_prompt,
|
|
q.image_url,
|
|
q.status as question_status
|
|
FROM question_set_items qsi
|
|
JOIN questions q ON q.id = qsi.question_id
|
|
WHERE qsi.set_id = $1
|
|
AND q.status != 'ARCHIVED'
|
|
ORDER BY qsi.display_order
|
|
`
|
|
|
|
type GetQuestionSetItemsRow struct {
|
|
ID int64 `json:"id"`
|
|
SetID int64 `json:"set_id"`
|
|
QuestionID int64 `json:"question_id"`
|
|
DisplayOrder int32 `json:"display_order"`
|
|
QuestionText string `json:"question_text"`
|
|
QuestionType string `json:"question_type"`
|
|
DifficultyLevel pgtype.Text `json:"difficulty_level"`
|
|
Points int32 `json:"points"`
|
|
Explanation pgtype.Text `json:"explanation"`
|
|
Tips pgtype.Text `json:"tips"`
|
|
VoicePrompt pgtype.Text `json:"voice_prompt"`
|
|
ImageUrl pgtype.Text `json:"image_url"`
|
|
QuestionStatus string `json:"question_status"`
|
|
}
|
|
|
|
func (q *Queries) GetQuestionSetItems(ctx context.Context, setID int64) ([]GetQuestionSetItemsRow, error) {
|
|
rows, err := q.db.Query(ctx, GetQuestionSetItems, setID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []GetQuestionSetItemsRow
|
|
for rows.Next() {
|
|
var i GetQuestionSetItemsRow
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.SetID,
|
|
&i.QuestionID,
|
|
&i.DisplayOrder,
|
|
&i.QuestionText,
|
|
&i.QuestionType,
|
|
&i.DifficultyLevel,
|
|
&i.Points,
|
|
&i.Explanation,
|
|
&i.Tips,
|
|
&i.VoicePrompt,
|
|
&i.ImageUrl,
|
|
&i.QuestionStatus,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const GetQuestionSetsContainingQuestion = `-- name: GetQuestionSetsContainingQuestion :many
|
|
SELECT qs.id, qs.title, qs.description, qs.set_type, qs.owner_type, qs.owner_id, qs.banner_image, qs.persona, qs.time_limit_minutes, qs.passing_score, qs.shuffle_questions, qs.status, qs.created_at, qs.updated_at, qs.sub_course_video_id
|
|
FROM question_sets qs
|
|
JOIN question_set_items qsi ON qsi.set_id = qs.id
|
|
WHERE qsi.question_id = $1
|
|
AND qs.status != 'ARCHIVED'
|
|
`
|
|
|
|
func (q *Queries) GetQuestionSetsContainingQuestion(ctx context.Context, questionID int64) ([]QuestionSet, error) {
|
|
rows, err := q.db.Query(ctx, GetQuestionSetsContainingQuestion, questionID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []QuestionSet
|
|
for rows.Next() {
|
|
var i QuestionSet
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.Title,
|
|
&i.Description,
|
|
&i.SetType,
|
|
&i.OwnerType,
|
|
&i.OwnerID,
|
|
&i.BannerImage,
|
|
&i.Persona,
|
|
&i.TimeLimitMinutes,
|
|
&i.PassingScore,
|
|
&i.ShuffleQuestions,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.UpdatedAt,
|
|
&i.SubCourseVideoID,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const RemoveQuestionFromSet = `-- name: RemoveQuestionFromSet :exec
|
|
DELETE FROM question_set_items
|
|
WHERE set_id = $1 AND question_id = $2
|
|
`
|
|
|
|
type RemoveQuestionFromSetParams struct {
|
|
SetID int64 `json:"set_id"`
|
|
QuestionID int64 `json:"question_id"`
|
|
}
|
|
|
|
func (q *Queries) RemoveQuestionFromSet(ctx context.Context, arg RemoveQuestionFromSetParams) error {
|
|
_, err := q.db.Exec(ctx, RemoveQuestionFromSet, arg.SetID, arg.QuestionID)
|
|
return err
|
|
}
|
|
|
|
const UpdateQuestionOrder = `-- name: UpdateQuestionOrder :exec
|
|
UPDATE question_set_items
|
|
SET display_order = $1
|
|
WHERE set_id = $2 AND question_id = $3
|
|
`
|
|
|
|
type UpdateQuestionOrderParams struct {
|
|
DisplayOrder int32 `json:"display_order"`
|
|
SetID int64 `json:"set_id"`
|
|
QuestionID int64 `json:"question_id"`
|
|
}
|
|
|
|
func (q *Queries) UpdateQuestionOrder(ctx context.Context, arg UpdateQuestionOrderParams) error {
|
|
_, err := q.db.Exec(ctx, UpdateQuestionOrder, arg.DisplayOrder, arg.SetID, arg.QuestionID)
|
|
return err
|
|
}
|