Yimaru-BackEnd/db/query/lms_personas.sql
Yared Yemane 5399d33af6 Add optional gender to LMS personas.
Migration 000065 adds nullable gender text column; persona API and Postman expose it alongside profile_picture.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-20 06:37:21 -07:00

45 lines
1.1 KiB
SQL

-- name: CreateLmsPersona :one
INSERT INTO lms_personas (name, description, profile_picture, gender, is_active)
VALUES ($1, $2, $3, $4, $5)
RETURNING *;
-- name: GetLmsPersonaByID :one
SELECT *
FROM lms_personas
WHERE id = $1;
-- name: UpdateLmsPersona :one
UPDATE lms_personas
SET
name = COALESCE(sqlc.narg('name')::varchar, name),
description = COALESCE(sqlc.narg('description')::text, description),
profile_picture = COALESCE(sqlc.narg('profile_picture')::text, profile_picture),
gender = COALESCE(sqlc.narg('gender')::text, gender),
is_active = COALESCE(sqlc.narg('is_active')::boolean, is_active),
updated_at = CURRENT_TIMESTAMP
WHERE id = sqlc.arg('id')
RETURNING *;
-- name: DeleteLmsPersona :exec
DELETE FROM lms_personas
WHERE id = $1;
-- name: ListLmsPersonas :many
SELECT
COUNT(*) OVER () AS total_count,
p.id,
p.name,
p.description,
p.profile_picture,
p.gender,
p.is_active,
p.created_at,
p.updated_at
FROM lms_personas p
WHERE (
sqlc.arg('filter_active')::boolean = FALSE
OR p.is_active = TRUE
)
ORDER BY p.name ASC, p.created_at DESC
LIMIT $1 OFFSET $2;