94 lines
1.7 KiB
SQL
94 lines
1.7 KiB
SQL
-- name: CreateAssessmentAttempt :one
|
|
INSERT INTO assessment_attempts (
|
|
user_id,
|
|
total_questions,
|
|
correct_answers,
|
|
score_percentage,
|
|
knowledge_level
|
|
)
|
|
VALUES (
|
|
$1, -- user_id
|
|
$2, -- total_questions
|
|
$3, -- correct_answers
|
|
$4, -- score_percentage
|
|
$5 -- knowledge_level
|
|
)
|
|
RETURNING
|
|
id,
|
|
user_id,
|
|
total_questions,
|
|
correct_answers,
|
|
score_percentage,
|
|
knowledge_level,
|
|
completed_at;
|
|
|
|
-- name: CreateAssessmentAnswer :exec
|
|
INSERT INTO assessment_answers (
|
|
attempt_id,
|
|
question_id,
|
|
selected_option_id,
|
|
short_answer,
|
|
is_correct
|
|
)
|
|
VALUES (
|
|
$1, -- attempt_id
|
|
$2, -- question_id
|
|
$3, -- selected_option_id
|
|
$4, -- short_answer
|
|
$5 -- is_correct
|
|
);
|
|
|
|
-- name: GetAssessmentOptionByID :one
|
|
SELECT
|
|
id,
|
|
question_id,
|
|
option_text,
|
|
is_correct
|
|
FROM assessment_question_options
|
|
WHERE id = $1
|
|
LIMIT 1;
|
|
|
|
-- name: GetCorrectOptionForQuestion :one
|
|
SELECT
|
|
id
|
|
FROM assessment_question_options
|
|
WHERE question_id = $1
|
|
AND is_correct = TRUE
|
|
LIMIT 1;
|
|
|
|
-- name: GetLatestAssessmentAttempt :one
|
|
SELECT *
|
|
FROM assessment_attempts
|
|
WHERE user_id = $1
|
|
ORDER BY completed_at DESC
|
|
LIMIT 1;
|
|
|
|
-- name: CreateAssessmentQuestion :one
|
|
INSERT INTO assessment_questions (
|
|
title,
|
|
description,
|
|
question_type,
|
|
difficulty_level
|
|
)
|
|
VALUES ($1, $2, $3, $4)
|
|
RETURNING *;
|
|
|
|
-- name: CreateAssessmentQuestionOption :exec
|
|
INSERT INTO assessment_question_options (
|
|
question_id,
|
|
option_text,
|
|
is_correct
|
|
)
|
|
VALUES ($1, $2, $3);
|
|
|
|
-- name: GetActiveAssessmentQuestions :many
|
|
SELECT *
|
|
FROM assessment_questions
|
|
WHERE is_active = TRUE
|
|
ORDER BY difficulty_level, id;
|
|
|
|
-- name: GetQuestionOptions :many
|
|
SELECT *
|
|
FROM assessment_question_options
|
|
WHERE question_id = $1;
|