function storeContactTraceStream()

in Frontend/connect-ccp-metric-worker.js [78:113]


function storeContactTraceStream(record, eventtype) {
  let transaction = db.transaction(["contactsPending", "contactsComplete"], "readwrite");
  busy++;

  transaction.oncomplete = function(event) {
    postMessage({type: 'contactStored', contact: {contactId: record.contactId}});
    busy--;
  };

  transaction.onerror = function(event) {
    console.log('Error storing ' + record);
    busy--;
  };

  let completeObjectStore = transaction.objectStore("contactsComplete");
  let pendingObjectStore = transaction.objectStore("contactsPending");

  if ((record['stageEnded'] && eventtype == 'Destroyed') || record['stageError'] || Date.parse(record['initialTimestamp']) < Date.now()-(pendingRecordTimeoutSeconds*1000)) {
    //If record has errored, ended, or has been pending for more than 24 hours, mark as complete
    var request = completeObjectStore.put(record);
    request.onsuccess = function(event) {
      // console.log("inserted " + JSON.stringify(record) + " to completeObjectStore");
      pendingObjectStore.delete(record.contactId);  // Remove record from pending object store.
    };
    var completeCountRequest = completeObjectStore.count();

    completeCountRequest.onsuccess = function () {
      completeObjectStoreLength = completeCountRequest.result;
    };
  } else {
    var request = pendingObjectStore.put(record);
    request.onsuccess = function(event) {
      // console.log("inserted " + JSON.stringify(record) + " to pendingObjectStore");
    }
  }
};