Cliente de transação
O Cliente de transação estende o Cliente de consulta e tem as seguintes propriedades extras sobre o cliente de consulta padrão.
Você pode acessar o cliente de consulta de transação da seguinte forma:
ts
import Database from '@ioc:Adonis/Lucid/Database'
const trx = await Database.transaction()
// para uma determinada conexão
const trx = await Database
.connection('pg')
.transaction()
Você também pode definir o nível de isolamento da transação da seguinte forma.
ts
await Database.transaction({
isolationLevel: 'read uncommitted'
})
A seguir está a lista de níveis de isolamento disponíveis.
- "read uncommitted" (leitura não confirmada)
- "read committed" (leitura confirmada)
- "snapshot"
- "repeatable read" (leitura repetível)
- "serializable" (serializável)
Métodos/Propriedades
A seguir está a lista de métodos e propriedades disponíveis na classe do cliente de transação.
commit
Confirme a transação
ts
await trx.commit()
rollback
Reverta a transação
ts
await trx.rollback()
isCompleted
Descubra se a transação foi concluída ou não.
ts
if (!trx.isCompleted) {
await trx.commit()
}
Eventos
O cliente da transação também registra os seguintes eventos quando a transação é confirmada ou revertida.
ts
trx.once('commit', (self) => {
console.log(self)
})
ts
trx.once('rollback', (self) => {
console.log(self)
})