-- 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;