ProjectMetrics.mjs 927 B

123456789101112131415161718192021222324252627282930313233
  1. import Metrics from '@overleaf/metrics'
  2. import { objectIdFromDate } from './utils.mjs'
  3. import { db } from '../storage/lib/mongodb.js'
  4. const projectsCollection = db.collection('projects')
  5. /**
  6. *
  7. * @param {Date} beforeTime
  8. * @return {Promise<void>}
  9. */
  10. export async function measurePendingChangesBeforeTime(beforeTime) {
  11. const pendingChangeCount = await projectsCollection.countDocuments({
  12. 'overleaf.backup.pendingChangeAt': {
  13. $lt: beforeTime,
  14. },
  15. })
  16. Metrics.gauge('backup_verification_pending_changes', pendingChangeCount)
  17. }
  18. /**
  19. *
  20. * @param {Date} graceTime
  21. * @return {Promise<void>}
  22. */
  23. export async function measureNeverBackedUpProjects(graceTime) {
  24. const neverBackedUpCount = await projectsCollection.countDocuments({
  25. 'overleaf.backup.lastBackedUpVersion': null,
  26. _id: { $lt: objectIdFromDate(graceTime) },
  27. })
  28. Metrics.gauge('backup_verification_never_backed_up', neverBackedUpCount)
  29. }