Logging de query e erros com contexto¶
Ver o SQL que roda, e saber exatamente qual query falhou.
Logando toda query¶
Passe onQuery nas opções do engine — ele é chamado por statement, com o SQL e
os params ligados:
import { createEngine } from "tempest-db-js";
const engine = createEngine("sqlite:///app.db", {
onQuery: ({ sql, params }) => {
console.debug(sql, params);
},
});
O hook roda para todo statement da session: execute, stream, e os
BEGIN/COMMIT/SAVEPOINT das transações.
O logger nunca quebra a query
Se o seu onQuery lançar, o erro é engolido — logging jamais derruba a
execução. Não confie nele para lógica de negócio.
Tracing / métricas
onQuery é o ponto para medir latência (marque tempo, correlacione por SQL),
contar queries por request, ou alimentar um tracer.
Erros com o SQL que falhou¶
Quando o driver rejeita um statement, tempest-db-js lança QueryExecutionError
— com o SQL e os params anexados, em vez de uma mensagem opaca do driver:
import { QueryExecutionError, insert } from "tempest-db-js";
try {
session.execute(insert(User).values({ id: 1, name: "dup" }));
session.execute(insert(User).values({ id: 1, name: "dup" })); // PK duplicada
} catch (err) {
if (err instanceof QueryExecutionError) {
console.error(err.message); // inclui "SQL: INSERT INTO ... params: [...]"
err.sql; // o SQL exato que falhou
err.params; // os params ligados, em ordem
err.cause; // o erro original do driver
}
}
A message já traz um preview seguro (valores longos truncados, blobs como
<N bytes>); as props sql/params têm o conteúdo completo para você logar.
Recap¶
createEngine(url, { onQuery })→ hook por statement{ sql, params }.- Erro no logger é engolido — nunca quebra a query.
- Falha do driver →
QueryExecutionErrorcomsql,params,cause.