-- name: CreateQuestion :one
INSERT INTO questions (
    author_teacher_id,
    title,
    prompt,
    topic,
    subject,
    difficulty,
    source,
    status,
    correct_answer
) VALUES (
    $1,
    $2,
    $3,
    $4,
    $5,
    $6,
    $7,
    $8,
    $9
)
RETURNING *;

-- name: ListQuestionsByTeacher :many
SELECT *
FROM questions
WHERE author_teacher_id = $1
ORDER BY created_at DESC;

-- name: GetQuestionByID :one
SELECT *
FROM questions
WHERE id = $1;

-- name: CreateTag :one
INSERT INTO tags (name)
VALUES ($1)
ON CONFLICT (name) DO UPDATE SET name = EXCLUDED.name
RETURNING *;

-- name: AttachTagToQuestion :exec
INSERT INTO question_tags (
    question_id,
    tag_id
) VALUES (
    $1,
    $2
)
ON CONFLICT (question_id, tag_id) DO NOTHING;

-- name: ListTags :many
SELECT *
FROM tags
ORDER BY name ASC;
