UNPKG

rxdb

Version:

A local-first realtime NoSQL Database for JavaScript applications - https://rxdb.info/

61 lines (57 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.firestoreRowToDocData = firestoreRowToDocData; exports.getContentByIds = getContentByIds; exports.getFirestoreSortFieldValue = getFirestoreSortFieldValue; exports.isoStringToServerTimestamp = isoStringToServerTimestamp; exports.serverTimestampToIsoString = serverTimestampToIsoString; exports.stripPrimaryKey = stripPrimaryKey; exports.stripServerTimestampField = stripServerTimestampField; var _firestore = require("firebase/firestore"); var _index = require("../../plugins/utils/index.js"); function getFirestoreSortFieldValue(docData, primaryKey) { var timeString = (0, _index.now)() + ''; return 'rxdb-' + timeString.padStart(15, '0') + '-' + docData[primaryKey]; } function stripServerTimestampField(serverTimestampField, docData) { var data = (0, _index.flatClone)(docData); delete data[serverTimestampField]; return data; } function serverTimestampToIsoString(serverTimestampField, docData) { var timestamp = docData[serverTimestampField]; var date = timestamp.toDate(); return date.toISOString(); } function isoStringToServerTimestamp(isoString) { var date = new Date(isoString); return _firestore.Timestamp.fromDate(date); } function firestoreRowToDocData(serverTimestampField, primaryPath, row) { var docData = stripServerTimestampField(serverTimestampField, row.data()); docData[primaryPath] = row.id; if (primaryPath !== 'id') { delete docData['id']; } return docData; } function stripPrimaryKey(primaryPath, docData) { docData = (0, _index.flatClone)(docData); delete docData[primaryPath]; return docData; } // https://stackoverflow.com/questions/61354866/is-there-a-workaround-for-the-firebase-query-in-limit-to-10 function getContentByIds(ids, getQuery) { var batches = []; while (ids.length) { // firestore limits batches to 10 var batch = ids.splice(0, 10); // add the batch request to to a queue batches.push(getQuery(batch)); } // after all of the data is fetched, return it return Promise.all(batches).then(content => content.map(i => i.docs).flat()); } //# sourceMappingURL=firestore-helper.js.map