mongodb.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // @ts-check
  2. const Metrics = require('@overleaf/metrics')
  3. const MongoUtils = require('@overleaf/mongo-utils')
  4. const config = require('config')
  5. const { MongoClient } = require('mongodb')
  6. const client = new MongoClient(config.mongo.uri)
  7. const db = client.db()
  8. const chunks = db.collection('projectHistoryChunks')
  9. const blobs = db.collection('projectHistoryBlobs')
  10. const globalBlobs = db.collection('projectHistoryGlobalBlobs')
  11. const shardedBlobs = db.collection('projectHistoryShardedBlobs')
  12. const projects = db.collection('projects')
  13. const deletedProjects = db.collection('deletedProjects')
  14. // Temporary collection for tracking progress of backed up old blobs (without a hash).
  15. // The initial sync process will be able to skip over these.
  16. // Schema: _id: projectId, blobs: [Binary]
  17. const backedUpBlobs = db.collection('projectHistoryBackedUpBlobs')
  18. Metrics.mongodb.monitor(client)
  19. async function cleanupTestDatabase() {
  20. await MongoUtils.cleanupTestDatabase(client)
  21. }
  22. module.exports = {
  23. client,
  24. db,
  25. chunks,
  26. blobs,
  27. globalBlobs,
  28. projects,
  29. deletedProjects,
  30. shardedBlobs,
  31. backedUpBlobs,
  32. cleanupTestDatabase,
  33. }