Introduzindo as transações, eles revertem todas as alterações feitas no banco de dados caso o método não seja executado. Isso ajuda a evitar vestígios de dados considerados lixo.
classExample {publicasynchandle() {// Cria um queryRunnerconsttrx=Connection.mysql.createQueryRunner();// Cria uma única conexão com o banco de dadosawaittrx.startTransaction();try { // O objeto trx é obrigatório se houver uma conexão com um banco de dados, mas opcional se você estiver usando "em repositórios de memória"
constresult=awaitthis.examplesRepository.create({ name:'example' }, trx);// Use depois de toda a lógica e antes que o método retorne para persistir modificações no banco de dadosif (trx.isTransactionActive) awaittrx.commitTransaction();return result; } catch (error:unknown) {// Em caso de falha de execução, reverte todas as alterações feitas no banco de dadosif (trx.isTransactionActive) awaittrx.rollbackTransaction();throw error; } finally {// Libera a conexão para que possa ser usada em outros casosif (!trx.isReleased) awaittrx.release(); } }}
Existem 13 tipos de consultas padrão para todos os módulos, elas são totalmente dinâmicas para que respondam a 90% de suas necessidades.