Class: Transaction

@nginstack/engine/lib/dataset/Transaction~ Transaction


new Transaction( [opt_database])

Gerencia a persistência de um conjunto de datasets para que suas alterações sejam efetivadas em uma única transação do banco de dados.

Parameters:
Name Type Argument Description
opt_database Database | Connection <optional>

Instância que representa o banco de dados.

Methods


add(ds)

Adiciona um dataset para ser persistido durante uma transação que não poderá ser obtido pelos métodos #get ou #getOrSet. Seu uso é recomendado para DataSets que não podem ser modificados por objetos que têm acesso à instância desta classe. Por exemplo, eventos de persistência recebem uma instância da transação corrente, mas não devem ter acesso aos dataSets internos dos objetos de gestão.

Parameters:
Name Type Description
ds DataSet

DataSet a ser adicionado na transação.


commit()

Persiste os dados que foram adicionados em uma transação.

See:
  • Database#applyUpdates
  • DataSet#applyUpdates
Returns:

Versão da operação realizada pela transação.

Type
number

contains(ds)

Determina se um dataset já está dentro da transação. Caso o dataset esteja true será retornado.

Parameters:
Name Type Description
ds DataSet

DataSet a ser analisado.

Returns:

True se o dataset estiver contido na transação.

Type
boolean

get(id)

Obtém um dataset previamente adicionado pelos métodos #set ou #getOrSet. Será gerado um erro caso não exista um dataSet registrado com o nome informado.

Parameters:
Name Type Description
id string

Id do DataSet previamente adicionado.

See:
Returns:

DataSet com o nome informado.

Type
DataSet

getOrSet(id, createFunc)

Obtém o dataset registrado com o id informado ou, caso não exista um, executa create para criar o DataSet e o registra com o id informado.

Parameters:
Name Type Description
id string

Id único do DataSet.

createFunc function

Função que deverá retornar o DataSet a ser adicionado na transação, caso não haja um com o id informado.

Returns:

DataSet com o id informado caso haja um ou o dataSet criado por createFunc no caso contrário.

Example
this.on('beforePersist', function (evt) {
   var evento = evt.transaction.getOrSet('erp.eventoUF', function () {
     var evento = new DataSet();
     dbCache.copyStructure('EVENTO', evento);
     evento.create();
   });
   if (evt.action === ApplyUpdatesAction.UPDATE &&
       evt.beforeValues.uf !== evt.afterValues.uf) {
     evento.append();
     // cria um registro na tabela evento com base evt.beforeValues e evt.afterValues
     evento.post();
     return evento;
   }
 });

rollback()

Desfaz todas as alterações que estão registradas no delta dos DataSets. Nota: O rollback usa o delta dos DataSets para desfazer as alterações, ou seja, apenas o que estiver no delta será desfeito.

See:
  • DataSet.rollBack

set(id, dataSet)

Adiciona um dataset a ser gravado nesta transação associando-o a um identificador único. Esse DataSet poderá ser obtido por meio dos métodos #get ou #getOrSet.

Parameters:
Name Type Description
id string

Id único do DataSet.

dataSet DataSet

DataSet a ser adicionado na transação, associado ao id informado.