Migration 000065 adds nullable gender text column; persona API and Postman expose it alongside profile_picture. Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
1.1 KiB
SQL
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;
|