MCPcopy
hub / github.com/apache/pouchdb / migrateMetadata

Function migrateMetadata

lib/index-browser.js:6049–6115  ·  view source on GitHub ↗
(txn)

Source from the content-addressed store, hash-verified

6047 // - metadata.seq
6048 // - stringify the metadata when storing it
6049 function migrateMetadata(txn) {
6050
6051 function decodeMetadataCompat(storedObject) {
6052 if (!storedObject.data) {
6053 // old format, when we didn't store it stringified
6054 storedObject.deleted = storedObject.deletedOrLocal === '1';
6055 return storedObject;
6056 }
6057 return decodeMetadata(storedObject);
6058 }
6059
6060 // ensure that every metadata has a winningRev and seq,
6061 // which was previously created on-the-fly but better to migrate
6062 var bySeqStore = txn.objectStore(BY_SEQ_STORE);
6063 var docStore = txn.objectStore(DOC_STORE);
6064 var cursor = docStore.openCursor();
6065 cursor.onsuccess = function (e) {
6066 var cursor = e.target.result;
6067 if (!cursor) {
6068 return; // done
6069 }
6070 var metadata = decodeMetadataCompat(cursor.value);
6071
6072 metadata.winningRev = metadata.winningRev ||
6073 winningRev(metadata);
6074
6075 function fetchMetadataSeq() {
6076 // metadata.seq was added post-3.2.0, so if it's missing,
6077 // we need to fetch it manually
6078 var start = metadata.id + '::';
6079 var end = metadata.id + '::\uffff';
6080 var req = bySeqStore.index('_doc_id_rev').openCursor(
6081 IDBKeyRange.bound(start, end));
6082
6083 var metadataSeq = 0;
6084 req.onsuccess = function (e) {
6085 var cursor = e.target.result;
6086 if (!cursor) {
6087 metadata.seq = metadataSeq;
6088 return onGetMetadataSeq();
6089 }
6090 var seq = cursor.primaryKey;
6091 if (seq > metadataSeq) {
6092 metadataSeq = seq;
6093 }
6094 cursor.continue();
6095 };
6096 }
6097
6098 function onGetMetadataSeq() {
6099 var metadataToStore = encodeMetadata(metadata,
6100 metadata.winningRev, metadata.deleted);
6101
6102 var req = docStore.put(metadataToStore);
6103 req.onsuccess = function () {
6104 cursor.continue();
6105 };
6106 }

Callers

nothing calls this directly

Calls 4

decodeMetadataCompatFunction · 0.70
winningRevFunction · 0.70
onGetMetadataSeqFunction · 0.70
fetchMetadataSeqFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…