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.
67 lines
1.5 KiB
67 lines
1.5 KiB
3 years ago
|
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,
|
||
|
};
|