You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.5 KiB
66 lines
1.5 KiB
import dayjs from 'dayjs'; |
|
import { envVars } from './config.js'; |
|
|
|
const logger = ({ type = 'info', msg }) => { |
|
const timestamp = new Date().toLocaleString(); |
|
|
|
let colour = '\x1b[39m'; |
|
let prefix; |
|
switch (type) { |
|
case 'error': |
|
colour = '\x1b[91m'; |
|
prefix = '[ERROR] '; |
|
break; |
|
case 'warn': |
|
colour = '\x1b[33m'; |
|
prefix = '[WARN] '; |
|
break; |
|
default: |
|
colour = '\x1b[32m'; |
|
prefix = '[INFO] '; |
|
} |
|
console.log(colour + prefix + timestamp + ': ' + msg); |
|
}; |
|
|
|
const validationErrorCheck = (error) => { |
|
try { |
|
if (error) throw error?.details[0]?.message; |
|
} catch (error) { |
|
logger({ type: 'error', msg: error }); |
|
process.exit(0); |
|
} |
|
}; |
|
|
|
// rubbish idea not being used |
|
const backupTimeDiff = async (lastDate) => { |
|
try { |
|
const now = dayjs(); |
|
const last = dayjs(lastDate); |
|
const difference = now.diff(last, 'seconds'); |
|
return difference; |
|
} catch (error) { |
|
logger({ type: 'error', msg: error }); |
|
return null; |
|
} |
|
}; |
|
|
|
const backupsToDelete = async (backupArray) => { |
|
// get the list of backups to delete and return only the names |
|
if (!backupArray) return []; |
|
return backupArray.map(({ name }) => name); |
|
}; |
|
|
|
const haveSomeCoffee = async () => { |
|
await new Promise( |
|
(resolve) => setTimeout(resolve, envVars.BACKUP_INTERVAL * 1000 * 60) // convert to mins |
|
// (resolve) => setTimeout(resolve, 500) // for testing |
|
); |
|
}; |
|
|
|
export { |
|
validationErrorCheck, |
|
backupTimeDiff, |
|
backupsToDelete, |
|
haveSomeCoffee, |
|
logger, |
|
};
|
|
|