From d546387a0a81ec0681e63bc613e506ba50200e3f Mon Sep 17 00:00:00 2001 From: SebassNoob <78428559+SebassNoob@users.noreply.github.com> Date: Tue, 30 Apr 2024 23:24:15 +0800 Subject: [PATCH] fix: use coderabbit suggestion Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- interapp-backend/scheduler/scheduler.ts | 63 ++++++++++--------------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/interapp-backend/scheduler/scheduler.ts b/interapp-backend/scheduler/scheduler.ts index 2e93ca7d..8d5ee9f2 100644 --- a/interapp-backend/scheduler/scheduler.ts +++ b/interapp-backend/scheduler/scheduler.ts @@ -164,46 +164,33 @@ schedule('0 0 0 */1 * *', async () => { console.info('db snapshot taken at location: ', newFile); }); -// backup minio bucket -const requiredEnv = [ - 'MINIO_ENDPOINT', - 'MINIO_ADDRESS', - 'MINIO_ROOT_USER', - 'MINIO_ROOT_PASSWORD', - 'MINIO_BUCKETNAME', -]; -const missingEnv = requiredEnv.filter((env) => !process.env[env]); +// Simplify environment variable handling and improve error messaging +const envVars = { + MINIO_ENDPOINT: process.env.MINIO_ENDPOINT, + MINIO_ADDRESS: process.env.MINIO_ADDRESS, + MINIO_ROOT_USER: process.env.MINIO_ROOT_USER, + MINIO_ROOT_PASSWORD: process.env.MINIO_ROOT_PASSWORD, + MINIO_BUCKETNAME: process.env.MINIO_BUCKETNAME, +}; +const missingEnv = Object.entries(envVars).filter(([, value]) => !value).map(([key]) => key); if (missingEnv.length > 0) { - console.error('Missing required environment variables: ', missingEnv); - process.exit(1); + throw new Error(`Missing required environment variables: ${missingEnv.join(', ')}`); } - -const minioURL = `http://${process.env.MINIO_ENDPOINT}${process.env.MINIO_ADDRESS}`; -const minioAccessKey = process.env.MINIO_ROOT_USER as string; -const minioSecretKey = process.env.MINIO_ROOT_PASSWORD as string; -const minioBucketName = process.env.MINIO_BUCKETNAME as string; +const { MINIO_ENDPOINT, MINIO_ADDRESS, MINIO_ROOT_USER, MINIO_ROOT_PASSWORD, MINIO_BUCKETNAME } = envVars; +const minioURL = `http://${MINIO_ENDPOINT}${MINIO_ADDRESS}`; +const minioAccessKey = MINIO_ROOT_USER; +const minioSecretKey = MINIO_ROOT_PASSWORD; +const minioBucketName = MINIO_BUCKETNAME; const minioAliasName = 'minio'; - -const minioBackupTask = schedule( - '0 0 0 */1 * *', - async () => { - // this is mounted on the host machine -- see docker compose file - const path = '/tmp/minio-dump'; - if (!existsSync(path)) mkdirSync(path); - - const d = new Date(); - const fmted = `interapp_minio_${d.toLocaleDateString('en-GB').replace(/\//g, '_')}`; - - const newFile = `${path}/${fmted}.tar.gz`; - - // create a new backup - await $`mc mirror ${minioAliasName}/${minioBucketName} /tmp/minio-dump/temp`; - await $`cd /tmp && tar -cvf ${newFile} minio-dump/temp`; - await $`rm -rf /tmp/minio-dump/temp`; - }, - { scheduled: false }, -); - -// set up mc alias first +const minioBackupTask = schedule('0 0 0 */1 * *', async () => { + const path = '/tmp/minio-dump'; + if (!existsSync(path)) mkdirSync(path); + const d = new Date(); + const fmted = `interapp_minio_${d.toLocaleDateString('en-GB').replace(/\//g, '_')}`; + const newFile = `${path}/${fmted}.tar.gz`; + await $`mc mirror ${minioAliasName}/${minioBucketName} /tmp/minio-dump/temp`; + await $`cd /tmp && tar -cvf ${newFile} minio-dump/temp`; + await $`rm -rf /tmp/minio-dump/temp`; +}, { scheduled: false }); await $`mc alias set ${minioAliasName} ${minioURL} ${minioAccessKey} ${minioSecretKey}`; minioBackupTask.start();