PersistorManager.js 951 B

12345678910111213141516171819202122232425262728293031323334353637
  1. const settings = require('settings-sharelatex')
  2. const logger = require('logger-sharelatex')
  3. logger.log(
  4. {
  5. backend: settings.filestore.backend,
  6. fallback: settings.filestore.fallback && settings.filestore.fallback.backend
  7. },
  8. 'Loading backend'
  9. )
  10. if (!settings.filestore.backend) {
  11. throw new Error('no backend specified - config incomplete')
  12. }
  13. function getPersistor(backend) {
  14. switch (backend) {
  15. case 'aws-sdk':
  16. case 's3':
  17. return require('./S3Persistor')
  18. case 'fs':
  19. return require('./FSPersistor')
  20. default:
  21. throw new Error(`unknown filestore backend: ${backend}`)
  22. }
  23. }
  24. let persistor = getPersistor(settings.filestore.backend)
  25. if (settings.filestore.fallback && settings.filestore.fallback.backend) {
  26. const migrationPersistor = require('./MigrationPersistor')
  27. persistor = migrationPersistor(
  28. persistor,
  29. getPersistor(settings.filestore.fallback.backend)
  30. )
  31. }
  32. module.exports = persistor