added method GetQuestionListByQuizID

This commit is contained in:
Pasha 2025-10-28 17:36:37 +03:00
parent 809c5e9c74
commit 1d0b0c8b4c
3 changed files with 78 additions and 3 deletions

@ -1676,3 +1676,6 @@ WHERE a.result = true AND s.id IS NULL AND a.deleted = false
AND r.deleted = false AND q.deleted = false AND r.deleted = false AND q.deleted = false
AND u.deleted = false AND t.active = true AND u.deleted = false AND t.active = true
AND t.expiration = false; AND t.expiration = false;
-- name: GetQuestionListByQuizID :many
SELECT * from question where quiz_id=$1 and deleted = false;

@ -3367,6 +3367,49 @@ func (q *Queries) GetQuestionListByIDs(ctx context.Context, dollar_1 []int32) ([
return items, nil return items, nil
} }
const getQuestionListByQuizID = `-- name: GetQuestionListByQuizID :many
SELECT id, quiz_id, title, description, questiontype, required, deleted, page, content, version, parent_ids, created_at, updated_at, session, auditory from question where quiz_id=$1 and deleted = false
`
func (q *Queries) GetQuestionListByQuizID(ctx context.Context, quizID int64) ([]Question, error) {
rows, err := q.db.QueryContext(ctx, getQuestionListByQuizID, quizID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Question
for rows.Next() {
var i Question
if err := rows.Scan(
&i.ID,
&i.QuizID,
&i.Title,
&i.Description,
&i.Questiontype,
&i.Required,
&i.Deleted,
&i.Page,
&i.Content,
&i.Version,
pq.Array(&i.ParentIds),
&i.CreatedAt,
&i.UpdatedAt,
&i.Session,
&i.Auditory,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getQuestionTitle = `-- name: GetQuestionTitle :one const getQuestionTitle = `-- name: GetQuestionTitle :one
SELECT title, questiontype,page FROM question WHERE id = $1 SELECT title, questiontype,page FROM question WHERE id = $1
` `

@ -5,13 +5,14 @@ import (
"database/sql" "database/sql"
"errors" "errors"
"fmt" "fmt"
"gitea.pena/SQuiz/common/dal/sqlcgen"
"gitea.pena/SQuiz/common/model"
"github.com/lib/pq"
"sort" "sort"
"strings" "strings"
"sync" "sync"
"time" "time"
"gitea.pena/SQuiz/common/dal/sqlcgen"
"gitea.pena/SQuiz/common/model"
"github.com/lib/pq"
) )
type Deps struct { type Deps struct {
@ -559,3 +560,31 @@ func (r *QuestionRepository) CheckQuestionOwner(ctx context.Context, accountID s
} }
return accountID == id, nil return accountID == id, nil
} }
func (r *QuestionRepository) GetQuestionListByQuizID(ctx context.Context, quizID int64) ([]model.Question, error) {
rows, err := r.queries.GetQuestionListByQuizID(ctx, quizID)
if err != nil {
return nil, err
}
var questions []model.Question
for _, row := range rows {
questions = append(questions, model.Question{
Id: uint64(row.ID),
QuizId: uint64(row.QuizID),
Title: row.Title,
Description: row.Description.String,
Type: string(row.Questiontype.([]byte)),
Required: row.Required.Bool,
Deleted: row.Deleted.Bool,
Page: int(row.Page.Int16),
Content: row.Content.String,
Version: int(row.Version.Int16),
ParentIds: row.ParentIds,
CreatedAt: row.CreatedAt.Time,
UpdatedAt: row.UpdatedAt.Time,
Auditory: row.Auditory,
Session: row.Session,
})
}
return questions, nil
}