new DeltaInspector()
O DeltaInspector é responsável por prover uma API de acesso ao conjunto de registros modificados (delta) de um DataSet.
Ele deve ser obtido utilizando o método DataSet.getDeltaInspector.
Methods
-
getCurrentRecord(key)
-
Retorna os dados da versão atual, após as modificações, do registro informado.
Este método retornará
null
se o registro solicitado não existir no DataSet inspecionado.Parameters:
Name Type Description key
number | DBKey Chave do registro que se deseja buscar o valor corrente.
Returns:
} Objeto com os campos e valores do registro informado.
- Type
- Record.<string, *> | null
Example
const recordInspector = ds.getDeltaInspector(); const currentRecord = recordInspector.getCurrentRecord(key); currentRecord.iname;
-
getDeletedRecords()
-
Retorna um objeto RecordIterator sobre os registros excluídos do DataSet. Os valores retornados serão os valores originais que foram excluídos do DataSet.
Returns:
Objeto RecordIterator referente aos registros excluídos.
- Type
- RecordIterator
Example
const ds = database.query('SELECT * FROM iGroupUser WHERE iKey = -1'); ds.automaticApplyUpdates = false; ds.del(); const removedRecords = []; const deltaInspector = ds.getDeltaInspector(); const iterator = deltaInspector.getDeletedRecords(); let next = iterator.next(); while (!next.done) { const removedRecord = deltaInspector.getOriginalRecord(next.value.ikey); removedRecords.push({ ikey: removedRecord.ikey, iname: removedRecord.iname }); next = iterator.next(); } removedRecords; // [{ ikey: -1, iname: 'anonymous' }]
-
getInsertedRecords()
-
Retorna um objeto RecordIterator sobre os registros inseridos no DataSet.
Returns:
Objeto RecordIterator referente aos registros inseridos.
- Type
- RecordIterator
Example
const ds = dbCache.newTableStructure('iHost'); ds.insertWithKey = true; ds.automaticApplyUpdates = false; ds.append(); ds.setField('iClass', -1898145089); // Servidores ds.setField('iName', 'Test A'); ds.post(); ds.append(); ds.setField('iClass', -1898145089); // Servidores ds.setField('iName', 'Test B'); ds.post(); const names = []; const iterator = ds.getDeltaInspector().getInsertedRecords(); let next = iterator.next(); while (!next.done) { names.push(next.value.iname); next = iterator.next(); } names; // ['Test A', 'Test B']
-
getOriginalRecord(key)
-
Retorna os dados originais, antes das modificações, do registro informado. Caso seja um registro inserido, serão retornados apenas os campos chave e versão, com os demais nulos.
Este método retornará
null
caso o registro não tenha sido alterado ou se não existir registro de alteração no Delta associado a chave informada.Parameters:
Name Type Description key
number | DBKey Chave do registro que se deseja buscar o valor original.
Returns:
Objeto com os campos e valores do registro informado.
- Type
- Record.<string, *> | null
Example
const recordInspector = ds.getDeltaInspector(); const currentRecord = recordInspector.getOriginalRecord(key); currentRecord.iname;
-
getUpdatedRecords()
-
Retorna um objeto RecordIterator sobre os registros modificados no DataSet. Os valores retornados serão os valores correntes do DataSet.
Returns:
Objeto RecordIterator referente aos registros modificados.
- Type
- RecordIterator
Example
const ds = database.query('SELECT * FROM iGroupUser WHERE iKey < -1 AND iClass = -1898142007'); ds.automaticApplyUpdates = false; for (ds.first(); !ds.eof; ds.next() ) { ds.setField('iName', 'Teste'); ds.post(); } const changes = []; const deltaInspector = ds.getDeltaInspector(); const iterator = deltaInspector.getUpdatedRecords(); const fieldNames = ds.getFieldNames({ toLowerCase: true }); let next = iterator.next(); while (!next.done) { const key = next.value.ikey; const beforeValues = deltaInspector.getOriginalRecord(key); const afterValues = next.value; changes.push('Key: ' + key + '. Changes: ' + fieldNames.reduce(function (r, name) { const beforeValue = beforeValues[name]; const afterValue = afterValues[name] if (beforeValue !== afterValue) { r.push(name + ': "' + beforeValue + '" => "' + afterValue + '"'); } return r; }, []).join(', ')); next = iterator.next(); } changes; // [ // 'Key: -1891604012. Changes: iname: "Atualização do Sistema" => "Teste"', // 'Key: -1898142003. Changes: iname: "Papel Desenvolvedor" => "Teste"' // ]