UNPKG

mongo-oplog2

Version:
53 lines 4.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLastDoc = exports.getStream = void 0; const util_1 = require("./util"); /** * Obtain a cursor stream for the oplog. * @param db database connection * @param ns optional namespace for filtering of documents returned * @param ts timestamp to start from. No specified timestamp is treated as from now. * @param coll collection for the oplog. (default: "oplog.rs") */ async function getStream({ db, ns, ts, coll, filter } = {}) { if (!db) { throw new Error("Mongo db is missing."); } coll = coll || "oplog.rs"; const collection = db.collection(coll); const timestamp = util_1.getTimestamp(ts); const query = { ts: { $gt: timestamp } }; if (filter) { Object.assign(query, filter); } else if (ns) { query.ns = { $regex: util_1.regex(ns) }; } const cursor = collection.find(query); for (const flag of ['awaitData', 'noCursorTimeout', 'oplogReplay', 'tailable']) { cursor.addCursorFlag(flag, true); } cursor.setCursorOption('numberOfRetries', Number.MAX_VALUE); cursor.batchSize(1000); return cursor.stream(); } exports.getStream = getStream; /** * Retrieves the last document from the capped collection. * @param db database connection * @param ns optional namespace for filtering of ducoments returned * @param coll collection to query (default: "oplog.rs") */ async function getLastDoc(db, ns, coll) { if (!db) { throw new Error("MongoDB connection is missing."); } coll = coll || "oplog.rs"; const collection = db.collection(coll); const query = ns ? { ns: { $regex: util_1.regex(ns) } } : {}; const cursor = collection.find(query).sort({ $natural: -1 }).limit(1); const doc = await cursor.next(); return doc; } exports.getLastDoc = getLastDoc; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBbUU7QUFVbkU7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEtBQXVCLEVBQUU7SUFDL0UsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztLQUFFO0lBQ3JELElBQUksR0FBRyxJQUFJLElBQUksVUFBVSxDQUFDO0lBQzFCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsTUFBTSxTQUFTLEdBQUcsbUJBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxNQUFNLEtBQUssR0FBZSxFQUFDLEVBQUUsRUFBRSxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsRUFBQyxDQUFDO0lBQ2pELElBQUksTUFBTSxFQUFFO1FBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FBRTtTQUN4QyxJQUFJLEVBQUUsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBQyxNQUFNLEVBQUUsWUFBSyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7S0FBRTtJQUNoRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1FBQzVFLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3BDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsU0FBZ0IsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQWZELDhCQWVDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxLQUFLLFVBQVUsVUFBVSxDQUFDLEVBQU8sRUFBRSxFQUFXLEVBQUUsSUFBYTtJQUNoRSxJQUFJLENBQUMsRUFBRSxFQUFFO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0tBQUU7SUFDL0QsSUFBSSxHQUFHLElBQUksSUFBSSxVQUFVLENBQUM7SUFDMUIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxNQUFNLEtBQUssR0FBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFFLEVBQUMsTUFBTSxFQUFFLFlBQUssQ0FBQyxFQUFFLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2RCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sR0FBRyxHQUFhLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFDLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQVJELGdDQVFDIn0=