InactiveProjectManager.coffee 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. async = require("async")
  2. _ = require("lodash")
  3. logger = require("logger-sharelatex")
  4. DocstoreManager = require("../Docstore/DocstoreManager")
  5. ProjectGetter = require("../Project/ProjectGetter")
  6. ProjectUpdateHandler = require("../Project/ProjectUpdateHandler")
  7. Project = require("../../models/Project").Project
  8. MILISECONDS_IN_DAY = 86400000
  9. module.exports = InactiveProjectManager =
  10. reactivateProjectIfRequired: (project_id, callback)->
  11. ProjectGetter.getProject project_id, {inactive:true}, (err, project)->
  12. if err?
  13. logger.err err:err, project_id:project_id, "error getting project"
  14. return callback(err)
  15. logger.log project_id:project_id, inactive:project.inactive, "seeing if need to reactivate project"
  16. if !project.inactive
  17. return callback()
  18. DocstoreManager.unarchiveProject project_id, (err)->
  19. if err?
  20. logger.err err:err, project_id:project_id, "error reactivating project in docstore"
  21. return callback(err)
  22. ProjectUpdateHandler.markAsActive project_id, callback
  23. deactivateOldProjects: (limit, callback)->
  24. sixMonthsAgo = new Date() - (MILISECONDS_IN_DAY * 1)
  25. Project.find()
  26. .where("lastOpened").lt(sixMonthsAgo)
  27. .where("inactive").ne(true)
  28. .select("_id")
  29. .limit(limit)
  30. .exec (err, projects)->
  31. if err?
  32. logger.err err:err, "could not get projects for deactivating"
  33. jobs = _.map projects, (project)->
  34. return (cb)->
  35. InactiveProjectManager.deactivateProject project._id, cb
  36. logger.log numberOfProjects:projects?.length, "deactivating projects"
  37. async.series jobs, callback
  38. deactivateProject: (project_id, callback)->
  39. logger.log project_id:project_id, "deactivating inactive project"
  40. DocstoreManager.archiveProject project_id, (err)->
  41. if err?
  42. logger.err err:err, project_id:project_id, "error deactivating project in docstore"
  43. return callback(err)
  44. ProjectUpdateHandler.markAsInactive project_id, callback