Yimaru-BackEnd/db/query/exam_prep_lesson_practices.sql
Yared Yemane 12ad59c409 Add draft vs published status for LMS and exam-prep practices.
Expose publish_status on create/update, filter learner-facing lists and gates, and add migration 000060.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 03:57:43 -07:00

67 lines
1.8 KiB
SQL

-- name: ExamPrepCreateLessonPractice :one
INSERT INTO exam_prep.lesson_practices (
unit_module_lesson_id,
title,
story_description,
story_image,
persona_id,
question_set_id,
quick_tips,
publish_status
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
RETURNING *;
-- name: ExamPrepGetLessonPracticeByID :one
SELECT *
FROM exam_prep.lesson_practices
WHERE id = $1;
-- name: ExamPrepGetLessonPracticeByQuestionSetID :one
SELECT *
FROM exam_prep.lesson_practices
WHERE question_set_id = $1
ORDER BY id DESC
LIMIT 1;
-- name: ExamPrepListLessonPracticesByLessonID :many
SELECT
COUNT(*) OVER () AS total_count,
p.id,
p.unit_module_lesson_id,
p.title,
p.story_description,
p.story_image,
p.persona_id,
p.question_set_id,
p.quick_tips,
p.publish_status,
p.created_at,
p.updated_at
FROM exam_prep.lesson_practices p
WHERE p.unit_module_lesson_id = $1
AND (
sqlc.arg('published_only')::boolean = FALSE
OR p.publish_status = 'PUBLISHED'::TEXT
)
ORDER BY p.created_at DESC
LIMIT $2
OFFSET $3;
-- name: ExamPrepUpdateLessonPractice :one
UPDATE exam_prep.lesson_practices
SET
title = coalesce(sqlc.narg('title')::varchar, title),
story_description = coalesce(sqlc.narg('story_description')::text, story_description),
story_image = coalesce(sqlc.narg('story_image')::text, story_image),
persona_id = coalesce(sqlc.narg('persona_id')::bigint, persona_id),
question_set_id = coalesce(sqlc.narg('question_set_id')::bigint, question_set_id),
quick_tips = coalesce(sqlc.narg('quick_tips')::text, quick_tips),
publish_status = coalesce(sqlc.narg('publish_status')::varchar, publish_status),
updated_at = CURRENT_TIMESTAMP
WHERE id = sqlc.arg('id')
RETURNING *;
-- name: ExamPrepDeleteLessonPractice :exec
DELETE FROM exam_prep.lesson_practices
WHERE id = $1;