software‎ > ‎módulos‎ > ‎engine‎ > ‎artigos‎ > ‎

iTag

Introdução

    O conceito de iTag resume-se a uma forma de agrupar alterações na tabela iLog. Com ela, é possível marcar dados a serem removidos posteriormente. Desta forma, em casos de teste, por exemplo, é possível criar e gravar dados em nossa estrutura de dados e, após terminados os testes, pode-se desfazer todas as alterações que foram realizadas e registradas sob uma iTag. Podemos então dividir o uso de iTags em dois momentos: gravação de alterações utilizando iTag; desvazimento de alterações marcadas com a iTag do primeiro momento. Vejamos como realizar estes dois momentos.


Gravando alterações com iTag

O applyUpdates do objeto DatabaseProxy foi melhorado para considerar a existência de uma iTag. Assim, para marcar as alterações realizadas com uma iTag deve-se alterar a propriedade changeLogTag de um objeto DatabaseProxy com uma tag única (recomenda-se o uso de GUID). Feito isto, todas as chamadas do método applyUpdates deste objeto gravarão as alterações na iLog preenchendo o campo iTag da iLog. Uma vez gravadas as alterações na iLog com o campo iTag preenchido, essas alterações poderão ser desfeitas mais facilmente em um segundo momento.

Exemplo:

    
    var db, ds;

    db = new DatabaseProxy('localhost:80','minhaBase');
    db.login('usuario','senha');
    db.changeLogTag = ngin.util.createGUID(false);

    ds = database.query("SELECT * FROM ivfs WHERE iKey in (-1111111,-222222,-333333)");

    tratamento1(ds); // método fictício que abstrai a manipulação e alteração dos dados do dataset.
    db.applyUpdates([ds]);

    tratamento2(ds);
    db.applyUpdates([ds]); // método fictício que abstrai a manipulação e alteração dos dados do dataset.


No exemplo acima, na linha 5, temos a iTag sendo gerada e configurada no DatabaseProxy. As alterações realizadas nos métodos de tratamento 1 e 2, e gravados nos applyUpdates consequentes, são gravadas na iLog com a iTag configurada na linha 5.

Desfazendo Alterações com iTag

Uma vez de posse da iTag que marcou as alterações gravadas na iLog, pode-se reverter as alterações facilmente com o método ngin.db.undoLogByTag(iTag).

Exemplo:

    
    __includeOnce('ufs:/ngin/db.js');

    var iTag = recuperaITag() // método fictício que abstrair a persistencia de uma iTag.
    var undoVersions = ngin.db.undoLogByTag(iTag);

    
O exemplo acima desfaz todas as versões de alteração contidas na iLog com a tag informada no parâmetro do método undoLogByTag.