backfill_deleted_project_ids.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const { DeletedProject } = require('../app/src/models/DeletedProject')
  2. const Async = require('async')
  3. DeletedProject.find({}, (error, deletedProjects) => {
  4. if (error) {
  5. throw error
  6. }
  7. Async.eachLimit(
  8. deletedProjects,
  9. 10,
  10. (deletedProject, cb) => {
  11. if (deletedProject.project) {
  12. const src = deletedProject.project
  13. let values = {
  14. 'deleterData.deletedProjectId': src._id,
  15. 'deleterData.deletedProjectOwnerId': src.owner_ref,
  16. 'deleterData.deletedProjectCollaboratorIds': src.collaberator_refs,
  17. 'deleterData.deletedProjectReadOnlyIds': src.readOnly_refs,
  18. 'deleterData.deletedProjectReadWriteToken': src.tokens
  19. ? src.tokens.readAndWrite
  20. : undefined,
  21. 'deleterData.deletedProjectOverleafId': src.overleaf
  22. ? src.overleaf.id
  23. : undefined,
  24. 'deleterData.deletedProjectOverleafHistoryId':
  25. src.overleaf && src.overleaf.history
  26. ? src.overleaf.history.id
  27. : undefined,
  28. 'deleterData.deletedProjectReadOnlyToken': src.tokens
  29. ? src.tokens.readOnly
  30. : undefined,
  31. 'deleterData.deletedProjectReadWriteTokenAccessIds':
  32. src.tokenAccessReadOnly_refs,
  33. 'deleterData.deletedProjectReadOnlyTokenAccessIds':
  34. src.tokenAccessReadAndWrite_refs,
  35. 'deleterData.deletedProjectLastUpdatedAt': src.lastUpdated
  36. }
  37. Object.keys(values).forEach(
  38. key => (values[key] === undefined ? delete values[key] : '')
  39. )
  40. DeletedProject.findOneAndUpdate(
  41. { _id: deletedProject._id },
  42. {
  43. $set: values
  44. },
  45. cb
  46. )
  47. } else {
  48. cb()
  49. }
  50. },
  51. err => {
  52. if (err) {
  53. throw err
  54. }
  55. process.exit(0)
  56. }
  57. )
  58. })