-- name: CreateCodigoAcesso :one
INSERT INTO codigos_acesso (
    codigo, descricao, validade_dias, expira_em, ativo, empresa_id, regiao
) VALUES (
    $1, $2, $3, $4, $5, $6, $7
)
RETURNING *;

-- name: ListCodigosAcesso :many
SELECT c.*, e.nome as empresa_nome
FROM codigos_acesso c
LEFT JOIN empresas e ON c.empresa_id = e.id
WHERE c.regiao = $1
ORDER BY c.criado_em DESC;

-- name: DeleteCodigoAcesso :exec
DELETE FROM codigos_acesso
WHERE id = $1;

-- name: GetCodigoAcesso :one
SELECT c.*, e.nome as empresa_nome
FROM codigos_acesso c
LEFT JOIN empresas e ON c.empresa_id = e.id
WHERE c.codigo = $1 LIMIT 1;

-- name: IncrementCodigoAcessoUso :exec
UPDATE codigos_acesso
SET usos = usos + 1
WHERE id = $1;
