photum/backend/internal/db/queries/cadastro_fot.sql
NANDO9322 2fd1e2ece7 fix(backend): corrige persistência da região na criação de FOT e ordenação
- Corrige bug onde a região não era salva no banco durante a criação de FOT (campo faltante no service).
- Adiciona fallback para garantir região "SP" caso o header x-regiao esteja vazio.
- Altera ordenação da listagem para updated_at DESC (editados aparecem no topo).
2026-02-06 23:37:59 -03:00

113 lines
3.4 KiB
SQL

-- name: CreateCadastroFot :one
INSERT INTO cadastro_fot (
fot, empresa_id, curso_id, ano_formatura_id, instituicao, cidade, estado, observacoes, gastos_captacao, pre_venda, regiao
) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, @regiao
)
ON CONFLICT (fot) DO UPDATE SET
empresa_id = EXCLUDED.empresa_id,
curso_id = EXCLUDED.curso_id,
ano_formatura_id = EXCLUDED.ano_formatura_id,
instituicao = EXCLUDED.instituicao,
cidade = EXCLUDED.cidade,
estado = EXCLUDED.estado,
observacoes = EXCLUDED.observacoes,
gastos_captacao = EXCLUDED.gastos_captacao,
pre_venda = EXCLUDED.pre_venda,
regiao = EXCLUDED.regiao,
updated_at = CURRENT_TIMESTAMP
RETURNING *;
-- name: ListCadastroFot :many
SELECT
c.*,
COALESCE(e.nome, '') as empresa_nome,
COALESCE(cur.nome, '') as curso_nome,
COALESCE(a.ano_semestre, '') as ano_formatura_label
FROM cadastro_fot c
LEFT JOIN empresas e ON c.empresa_id = e.id
LEFT JOIN cursos cur ON c.curso_id = cur.id
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
WHERE c.regiao = @regiao
ORDER BY c.updated_at DESC;
-- name: ListCadastroFotByEmpresa :many
SELECT
c.*,
COALESCE(e.nome, '') as empresa_nome,
COALESCE(cur.nome, '') as curso_nome,
COALESCE(a.ano_semestre, '') as ano_formatura_label
FROM cadastro_fot c
LEFT JOIN empresas e ON c.empresa_id = e.id
LEFT JOIN cursos cur ON c.curso_id = cur.id
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
WHERE c.empresa_id = $1 AND c.regiao = @regiao
ORDER BY c.updated_at DESC;
-- name: GetCadastroFotByID :one
SELECT
c.*,
COALESCE(e.nome, '') as empresa_nome,
COALESCE(cur.nome, '') as curso_nome,
COALESCE(a.ano_semestre, '') as ano_formatura_label
FROM cadastro_fot c
LEFT JOIN empresas e ON c.empresa_id = e.id
LEFT JOIN cursos cur ON c.curso_id = cur.id
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
WHERE c.id = $1 AND c.regiao = @regiao;
-- name: GetCadastroFotByFOT :one
SELECT * FROM cadastro_fot WHERE fot = $1 AND regiao = @regiao;
-- name: UpdateCadastroFot :one
UPDATE cadastro_fot SET
fot = $2,
empresa_id = $3,
curso_id = $4,
ano_formatura_id = $5,
instituicao = $6,
cidade = $7,
estado = $8,
observacoes = $9,
gastos_captacao = $10,
pre_venda = $11,
updated_at = CURRENT_TIMESTAMP
WHERE id = $1 AND regiao = @regiao
RETURNING *;
-- name: DeleteCadastroFot :exec
DELETE FROM cadastro_fot WHERE id = $1 AND regiao = @regiao;
-- name: GetCadastroFotByFotJoin :one
SELECT
c.*,
COALESCE(e.nome, '') as empresa_nome,
COALESCE(cur.nome, '') as curso_nome,
COALESCE(a.ano_semestre, '') as ano_formatura_label
FROM cadastro_fot c
LEFT JOIN empresas e ON c.empresa_id = e.id
LEFT JOIN cursos cur ON c.curso_id = cur.id
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
WHERE c.fot = $1 AND c.regiao = @regiao;
-- name: UpdateCadastroFotGastos :exec
UPDATE cadastro_fot SET
gastos_captacao = $2,
updated_at = CURRENT_TIMESTAMP
WHERE id = $1 AND regiao = @regiao;
-- name: SearchFot :many
SELECT
c.*,
COALESCE(e.nome, '') as empresa_nome,
COALESCE(cur.nome, '') as curso_nome,
COALESCE(a.ano_semestre, '') as ano_formatura_label
FROM cadastro_fot c
LEFT JOIN empresas e ON c.empresa_id = e.id
LEFT JOIN cursos cur ON c.curso_id = cur.id
LEFT JOIN anos_formaturas a ON c.ano_formatura_id = a.id
WHERE CAST(c.fot AS TEXT) ILIKE '%' || $1 || '%' AND c.regiao = @regiao
ORDER BY c.fot ASC
LIMIT 10;