ProjectUpdateHandler.mjs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const { Project } = require('../../models/Project')
  2. const { callbackify } = require('util')
  3. const ProjectUpdateHandler = {
  4. async markAsUpdated(projectId, lastUpdatedAt, lastUpdatedBy) {
  5. if (!lastUpdatedAt) {
  6. lastUpdatedAt = new Date()
  7. }
  8. const conditions = {
  9. _id: projectId,
  10. lastUpdated: { $lt: lastUpdatedAt },
  11. }
  12. const update = {
  13. lastUpdated: lastUpdatedAt || new Date().getTime(),
  14. lastUpdatedBy,
  15. }
  16. await Project.updateOne(conditions, update, {}).exec()
  17. },
  18. async markAsOpened(projectId) {
  19. const conditions = { _id: projectId }
  20. const update = { lastOpened: Date.now() }
  21. await Project.updateOne(conditions, update, {}).exec()
  22. },
  23. async markAsInactive(projectId) {
  24. const conditions = { _id: projectId }
  25. const update = { active: false }
  26. await Project.updateOne(conditions, update, {}).exec()
  27. },
  28. async markAsActive(projectId) {
  29. const conditions = { _id: projectId }
  30. const update = { active: true }
  31. await Project.updateOne(conditions, update, {}).exec()
  32. },
  33. }
  34. module.exports = {
  35. markAsUpdated: callbackify(ProjectUpdateHandler.markAsUpdated),
  36. markAsOpened: callbackify(ProjectUpdateHandler.markAsOpened),
  37. markAsInactive: callbackify(ProjectUpdateHandler.markAsInactive),
  38. markAsActive: callbackify(ProjectUpdateHandler.markAsActive),
  39. promises: ProjectUpdateHandler,
  40. }