refactor: encapsulate startup logic and improve backup scheduling in index.js

This commit is contained in:
sebseb7
2025-09-04 07:25:15 +02:00
parent 840fceee86
commit acfb7a0552
2 changed files with 93 additions and 33 deletions

45
download.js Normal file
View File

@@ -0,0 +1,45 @@
require('dotenv').config();
const {
downloadBackupFile,
compressBackupFile,
formatBytes,
sendTelegramBroadcast
} = require('./index.js');
async function downloadOnly() {
try {
console.log('Starting download process...');
// Download backup file from SMB share
const localBackupFile = await downloadBackupFile();
console.log('Download completed:', localBackupFile);
// Optionally compress the file
if (process.argv.includes('--compress')) {
const compressedFile = await compressBackupFile(localBackupFile);
console.log('Compression completed:', compressedFile);
// Optionally send notification
if (process.argv.includes('--notify')) {
await sendTelegramBroadcast('all', `Backup downloaded and compressed ✅\nFile: ${compressedFile}`);
}
} else if (process.argv.includes('--notify')) {
await sendTelegramBroadcast('all', `Backup downloaded ✅\nFile: ${localBackupFile}`);
}
} catch (error) {
console.error('Download failed:', error);
// Optionally notify on error
if (process.argv.includes('--notify')) {
await sendTelegramBroadcast('errors', `Download failed 🔴\nError: ${error.message}`);
}
}
}
// Run if called directly
if (require.main === module) {
downloadOnly();
}
module.exports = { downloadOnly };

View File

@@ -310,8 +310,10 @@ async function runBackupProcess() {
}
}
// Run backup immediately when starting
(async () => {
// Only run startup logic if this file is executed directly (not imported)
if (require.main === module) {
// Run backup immediately when starting
(async () => {
try {
const latestBackupTime = await getLatestBackupTime();
const now = new Date();
@@ -334,13 +336,12 @@ async function runBackupProcess() {
console.error('Error during startup check, proceeding with backup:', err);
runBackupProcess();
}
})();
})();
console.log('Database backup service started. Running backups every 24 hours.');
console.log('Database backup service started. Running backups every 24 hours.');
// Startup health notification
(async () => {
// Startup health notification
(async () => {
try {
const when = new Date().toISOString();
const host = require('os').hostname();
@@ -350,4 +351,18 @@ console.log('Database backup service started. Running backups every 24 hours.');
} catch (e) {
console.warn('Startup broadcast failed:', e.message);
}
})();
})();
}
// Export functions for reuse in other scripts
module.exports = {
downloadBackupFile,
compressBackupFile,
formatBytes,
sendTelegramBroadcast,
getDbSizeBytes,
// Export configurations that might be needed
smbConfig,
config: config, // MSSQL config
s3 // S3 client
};