From 09110116249531ae4f738d84801a47a7b8b83416 Mon Sep 17 00:00:00 2001 From: Simon Detheridge Date: Fri, 4 Sep 2020 14:13:07 +0100 Subject: [PATCH 1/2] Add 'endId' parameter to rearchive script --- .../docstore/scripts/rearchive-all-docs.js | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/services/docstore/scripts/rearchive-all-docs.js b/services/docstore/scripts/rearchive-all-docs.js index 731aff9e27..77dfb7cc43 100644 --- a/services/docstore/scripts/rearchive-all-docs.js +++ b/services/docstore/scripts/rearchive-all-docs.js @@ -61,20 +61,32 @@ async function rearchiveAllDocs() { // start from an objectId and run in ascending order, so we can resume later const query = {} const startId = params._[0] + const endId = params.e if (startId) { - const validator = new RegExp('^[0-9a-fA-F]{24}$') - if (!validator.test(startId)) { - console.error('Invalid object id') - return + if (!new RegExp('^[0-9a-fA-F]{24}$').test(startId)) { + throw new Error('Invalid start object id') } query._id = { - $gt: ObjectId(startId) + $gte: ObjectId(startId) } console.log(`Starting from object ID ${startId}`) } else { console.log('No object id specified. Starting from the beginning.') } + if (endId) { + if (!new RegExp('^[0-9a-fA-F]{24}$').test(endId)) { + throw new Error('Invalid end object id') + } + query._id = { + ...(query._id || {}), + ...{ + $lte: ObjectId(endId) + } + } + console.log(`Stopping at object ID ${endId}`) + } + const results = (await getCollection('projects')) .find(query, { _id: 1 }) .sort({ _id: 1 }) From 1988d0afb52b9b714774cdf58e9995d1f215bb66 Mon Sep 17 00:00:00 2001 From: Simon Detheridge Date: Fri, 4 Sep 2020 14:50:50 +0100 Subject: [PATCH 2/2] Update scripts/rearchive-all-docs.js Co-authored-by: Jakob Ackermann --- services/docstore/scripts/rearchive-all-docs.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/services/docstore/scripts/rearchive-all-docs.js b/services/docstore/scripts/rearchive-all-docs.js index 77dfb7cc43..4530a56ce4 100644 --- a/services/docstore/scripts/rearchive-all-docs.js +++ b/services/docstore/scripts/rearchive-all-docs.js @@ -78,12 +78,8 @@ async function rearchiveAllDocs() { if (!new RegExp('^[0-9a-fA-F]{24}$').test(endId)) { throw new Error('Invalid end object id') } - query._id = { - ...(query._id || {}), - ...{ - $lte: ObjectId(endId) - } - } + query._id = query._id || {} + query._id.$lte = ObjectId(endId) console.log(`Stopping at object ID ${endId}`) }