Files
speckle-server/packages/server/modules/multiregion/index.ts
T
2025-03-07 09:18:12 +00:00

49 lines
1.3 KiB
TypeScript

import { moduleLogger } from '@/observability/logging'
import {
getValidDefaultProjectRegionKey,
initializeRegisteredRegionClients as initDb
} from '@/modules/multiregion/utils/dbSelector'
import { isMultiRegionEnabled } from '@/modules/multiregion/helpers'
import { SpeckleModule } from '@/modules/shared/helpers/typeHelper'
import {
initializeRegisteredRegionClients as initBlobs,
isMultiRegionBlobStorageEnabled
} from '@/modules/multiregion/utils/blobStorageSelector'
import {
initializeQueue,
shutdownQueue,
startQueue
} from '@/modules/multiregion/services/queue'
const multiRegion: SpeckleModule = {
async init({ isInitial }) {
const isEnabled = isMultiRegionEnabled()
if (!isEnabled) {
return
}
moduleLogger.info('🌍 Init multiRegion module')
// Init registered region clients
await initDb()
// validate default project region key
await getValidDefaultProjectRegionKey()
const isBlobStorageEnabled = isMultiRegionBlobStorageEnabled()
if (isBlobStorageEnabled) {
moduleLogger.info('🌍 Init multiRegion blob storage')
await initBlobs()
}
if (isInitial) {
await initializeQueue()
await startQueue()
}
},
async shutdown() {
await shutdownQueue()
}
}
export default multiRegion