mongodb.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. // Temporary collection for tracking progress of backed up old blobs (without a hash).
  14. // The initial sync process will be able to skip over these.
  15. // Schema: _id: projectId, blobs: [Binary]
  16. const backedUpBlobs = db.collection('projectHistoryBackedUpBlobs')
  17. Metrics.mongodb.monitor(client)
  18. async function cleanupTestDatabase() {
  19. await MongoUtils.cleanupTestDatabase(client)
  20. }
  21. module.exports = {
  22. client,
  23. db,
  24. chunks,
  25. blobs,
  26. globalBlobs,
  27. projects,
  28. shardedBlobs,
  29. backedUpBlobs,
  30. cleanupTestDatabase,
  31. }