Corrige erro de extração de scalar em jsonb_array_elements_text adicionando verificações de tipo jsonb_typeof em todas as queries SQL relevantes

This commit is contained in:
2026-05-28 14:48:24 +00:00
parent c4fbf4d877
commit 9fde9251f4
+7 -7
View File
@@ -820,7 +820,7 @@ app.get('/api/observacoes/contar', requireAuth, async (req, res) => {
let pCount = 1;
if (crianca) {
sql += ` AND EXISTS (
sql += ` AND jsonb_typeof(criancas) = 'array' AND EXISTS (
SELECT 1 FROM jsonb_array_elements_text(criancas) AS c
WHERE LOWER(c) LIKE $${pCount}
)`;
@@ -854,7 +854,7 @@ app.get('/api/observacoes/contar', requireAuth, async (req, res) => {
if (tags) {
const tagList = tags.split(',').map(t => t.trim().toLowerCase());
sql += ` AND EXISTS (
sql += ` AND jsonb_typeof(tags) = 'array' AND EXISTS (
SELECT 1 FROM jsonb_array_elements_text(tags) AS t
WHERE LOWER(t) = ANY($${pCount})
)`;
@@ -891,7 +891,7 @@ app.post('/api/modelos/gerar-relatorio', requireAuth, async (req, res) => {
let pCount = 1;
if (crianca) {
sql += ` AND EXISTS (
sql += ` AND jsonb_typeof(criancas) = 'array' AND EXISTS (
SELECT 1 FROM jsonb_array_elements_text(criancas) AS c
WHERE LOWER(c) LIKE $${pCount}
)`;
@@ -925,7 +925,7 @@ app.post('/api/modelos/gerar-relatorio', requireAuth, async (req, res) => {
if (tags) {
const tagList = Array.isArray(tags) ? tags : [tags];
sql += ` AND EXISTS (
sql += ` AND jsonb_typeof(tags) = 'array' AND EXISTS (
SELECT 1 FROM jsonb_array_elements_text(tags) AS t
WHERE LOWER(t) = ANY($${pCount})
)`;
@@ -1106,7 +1106,7 @@ app.get('/api/observacoes/buscar', requireAuth, async (req, res) => {
let pCount = 1;
if (crianca) {
sql += ` AND EXISTS (
sql += ` AND jsonb_typeof(criancas) = 'array' AND EXISTS (
SELECT 1 FROM jsonb_array_elements_text(criancas) AS c
WHERE LOWER(c) LIKE $${pCount}
)`;
@@ -1122,7 +1122,7 @@ app.get('/api/observacoes/buscar', requireAuth, async (req, res) => {
if (tags) {
const tagList = tags.split(',').map(t => t.trim().toLowerCase());
sql += ` AND EXISTS (
sql += ` AND jsonb_typeof(tags) = 'array' AND EXISTS (
SELECT 1 FROM jsonb_array_elements_text(tags) AS t
WHERE LOWER(t) = ANY($${pCount})
)`;
@@ -1154,7 +1154,7 @@ app.get('/api/observacoes/resumo', requireAuth, async (req, res) => {
let sql = `
SELECT date, time, report, tags, turma, SUBSTRING(report FROM 1 FOR 120) || '...' as preview
FROM escola.observacoes
WHERE EXISTS (
WHERE jsonb_typeof(criancas) = 'array' AND EXISTS (
SELECT 1 FROM jsonb_array_elements_text(criancas) AS c
WHERE LOWER(c) LIKE $1
)