Files
overleaf-cep/services/web/app/src/Features/Project/ProjectUpdateHandler.js
David 2bdd213305 Merge pull request #16657 from overleaf/dp-mongoose-callback-project-update-handler
Promisify ProjectUpdateHandler and ProjectUpdateHandlerTests

GitOrigin-RevId: 312cbe71d431cf50932ab7d5501529d87f7827f2
2024-02-09 09:07:27 +00:00

48 lines
1.4 KiB
JavaScript

const { Project } = require('../../models/Project')
const { callbackify } = require('util')
const ProjectUpdateHandler = {
async markAsUpdated(projectId, lastUpdatedAt, lastUpdatedBy) {
if (!lastUpdatedAt) {
lastUpdatedAt = new Date()
}
const conditions = {
_id: projectId,
lastUpdated: { $lt: lastUpdatedAt },
}
const update = {
lastUpdated: lastUpdatedAt || new Date().getTime(),
lastUpdatedBy,
}
await Project.updateOne(conditions, update, {}).exec()
},
async markAsOpened(projectId) {
const conditions = { _id: projectId }
const update = { lastOpened: Date.now() }
await Project.updateOne(conditions, update, {}).exec()
},
async markAsInactive(projectId) {
const conditions = { _id: projectId }
const update = { active: false }
await Project.updateOne(conditions, update, {}).exec()
},
async markAsActive(projectId) {
const conditions = { _id: projectId }
const update = { active: true }
await Project.updateOne(conditions, update, {}).exec()
},
}
module.exports = {
markAsUpdated: callbackify(ProjectUpdateHandler.markAsUpdated),
markAsOpened: callbackify(ProjectUpdateHandler.markAsOpened),
markAsInactive: callbackify(ProjectUpdateHandler.markAsInactive),
markAsActive: callbackify(ProjectUpdateHandler.markAsActive),
promises: ProjectUpdateHandler,
}