61 lines
1.1 KiB
SQL
61 lines
1.1 KiB
SQL
-- name: CreateLevel :one
|
|
INSERT INTO levels (
|
|
program_id,
|
|
title,
|
|
description,
|
|
level_index,
|
|
is_active
|
|
)
|
|
VALUES ($1, $2, $3, $4, COALESCE($5, true))
|
|
RETURNING *;
|
|
|
|
|
|
-- name: GetLevelsByProgram :many
|
|
SELECT
|
|
COUNT(*) OVER () AS total_count,
|
|
id,
|
|
program_id,
|
|
title,
|
|
description,
|
|
level_index,
|
|
number_of_modules,
|
|
number_of_practices,
|
|
number_of_videos,
|
|
is_active
|
|
FROM levels
|
|
WHERE program_id = $1
|
|
ORDER BY level_index ASC;
|
|
|
|
|
|
-- name: UpdateLevel :exec
|
|
UPDATE levels
|
|
SET
|
|
title = COALESCE($1, title),
|
|
description = COALESCE($2, description),
|
|
level_index = COALESCE($3, level_index),
|
|
is_active = COALESCE($4, is_active)
|
|
WHERE id = $5;
|
|
|
|
|
|
-- name: IncrementLevelModuleCount :exec
|
|
UPDATE levels
|
|
SET number_of_modules = number_of_modules + 1
|
|
WHERE id = $1;
|
|
|
|
|
|
-- name: IncrementLevelPracticeCount :exec
|
|
UPDATE levels
|
|
SET number_of_practices = number_of_practices + 1
|
|
WHERE id = $1;
|
|
|
|
|
|
-- name: IncrementLevelVideoCount :exec
|
|
UPDATE levels
|
|
SET number_of_videos = number_of_videos + 1
|
|
WHERE id = $1;
|
|
|
|
|
|
-- name: DeleteLevel :exec
|
|
DELETE FROM levels
|
|
WHERE id = $1;
|