back_fill_doc_rev.mjs 934 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { db } from '../lib/mongodb.mjs'
  2. import { batchedUpdate } from '@overleaf/mongo-utils/batchedUpdate.js'
  3. const LOG_EVERY_IN_S = parseInt(process.env.LOG_EVERY_IN_S, 10) || 5
  4. async function main() {
  5. let processed = 0
  6. let deleted = 0
  7. let lastLog = 0
  8. function logProgress() {
  9. console.log(`rev missing ${processed} | deleted=true ${deleted}`)
  10. }
  11. await batchedUpdate(
  12. db.docs,
  13. { rev: { $exists: false } },
  14. async docs => {
  15. await db.docs.updateMany(
  16. {
  17. _id: { $in: docs.map(doc => doc._id) },
  18. rev: { $exists: false },
  19. },
  20. { $set: { rev: 1 } }
  21. )
  22. processed += docs.length
  23. deleted += docs.filter(doc => doc.deleted).length
  24. if (Date.now() - lastLog >= LOG_EVERY_IN_S * 1000) {
  25. logProgress()
  26. lastLog = Date.now()
  27. }
  28. },
  29. {
  30. _id: 1,
  31. deleted: true,
  32. }
  33. )
  34. logProgress()
  35. }
  36. export default main