[object-persistor] lazy load all the persistor implementations (#31431)

GitOrigin-RevId: ca8a5a7d6402810b01351c89318cb2c5ed0b7385
This commit is contained in:
Jakob Ackermann
2026-02-10 09:06:46 +00:00
committed by Copybot
parent 457ba8b1dd
commit a1a248cf9b
@@ -1,27 +1,30 @@
const Logger = require('@overleaf/logger') const Logger = require('@overleaf/logger')
const { SettingsError } = require('./Errors') const { SettingsError } = require('./Errors')
const GcsPersistor = require('./GcsPersistor')
const { S3Persistor } = require('./S3Persistor')
const FSPersistor = require('./FSPersistor')
const MigrationPersistor = require('./MigrationPersistor')
const {
PerProjectEncryptedS3Persistor,
} = require('./PerProjectEncryptedS3Persistor')
function getPersistor(backend, settings) { function getPersistor(backend, settings) {
switch (backend) { switch (backend) {
case 'aws-sdk': case 'aws-sdk':
case 's3': case 's3': {
const { S3Persistor } = require('./S3Persistor')
return new S3Persistor(settings.s3) return new S3Persistor(settings.s3)
case 's3SSEC': }
case 's3SSEC': {
const {
PerProjectEncryptedS3Persistor,
} = require('./PerProjectEncryptedS3Persistor')
return new PerProjectEncryptedS3Persistor(settings.s3SSEC) return new PerProjectEncryptedS3Persistor(settings.s3SSEC)
case 'fs': }
case 'fs': {
const FSPersistor = require('./FSPersistor')
return new FSPersistor({ return new FSPersistor({
useSubdirectories: settings.useSubdirectories, useSubdirectories: settings.useSubdirectories,
paths: settings.paths, paths: settings.paths,
}) })
case 'gcs': }
case 'gcs': {
const GcsPersistor = require('./GcsPersistor')
return new GcsPersistor(settings.gcs) return new GcsPersistor(settings.gcs)
}
default: default:
throw new SettingsError('unknown backend', { backend }) throw new SettingsError('unknown backend', { backend })
} }
@@ -44,6 +47,7 @@ module.exports = function create(settings) {
if (settings.fallback && settings.fallback.backend) { if (settings.fallback && settings.fallback.backend) {
const primary = persistor const primary = persistor
const fallback = getPersistor(settings.fallback.backend, settings) const fallback = getPersistor(settings.fallback.backend, settings)
const MigrationPersistor = require('./MigrationPersistor')
persistor = new MigrationPersistor(primary, fallback, settings.fallback) persistor = new MigrationPersistor(primary, fallback, settings.fallback)
} }