Ensure daily automatic backups are performed upon user login

Introduce a daily automatic backup check and execution triggered upon successful user login, ensuring data consistency and safety across the platform. This includes a new `checkAndPerformDailyBackup` method in `backupService.ts` and its integration into the login process in `localAuth.ts` and `localAuth.production.ts`.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 8e57b9d9-f2b2-427d-ba7a-757427e9b079
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/8e57b9d9-f2b2-427d-ba7a-757427e9b079/BLTvIk5
This commit is contained in:
michaelschal committed 2025-09-02 17:54:11 +00:00
1 parent a25b178ee2
commit 1ccfc740b4
3 files changed
+68 -2

No files matched your search

+40
View File
@@ -211,6 +211,46 @@ export class BackupService {
return Math.round(bytes / Math.pow(1024, i) * 100) / 100 + ' ' + sizes[i];
}
// Nouvelle méthode : Vérifier et effectuer une sauvegarde quotidienne si nécessaire
async checkAndPerformDailyBackup(userId: string = 'system'): Promise<{ backupPerformed: boolean; message: string }> {
try {
const today = new Date().toISOString().split('T')[0]; // Format YYYY-MM-DD
// Vérifier s'il y a déjà une sauvegarde automatique aujourd'hui
const existingBackupToday = await db.select()
.from(databaseBackups)
.where(eq(databaseBackups.backupType, 'automatic'))
.orderBy(desc(databaseBackups.createdAt))
.limit(1);
const lastBackup = existingBackupToday[0];
const lastBackupDate = lastBackup ? lastBackup.createdAt.toISOString().split('T')[0] : null;
// Si aucune sauvegarde automatique aujourd'hui, en créer une
if (lastBackupDate !== today) {
console.log('🔄 Première connexion du jour - Création de la sauvegarde automatique...');
await this.createBackup('automatic', userId);
console.log('✅ Sauvegarde quotidienne effectuée avec succès');
return {
backupPerformed: true,
message: 'Sauvegarde quotidienne effectuée avec succès'
};
} else {
console.log('ℹ️ Sauvegarde quotidienne déjà effectuée aujourd\'hui');
return {
backupPerformed: false,
message: 'Sauvegarde quotidienne déjà effectuée aujourd\'hui'
};
}
} catch (error) {
console.error('❌ Erreur lors de la vérification de sauvegarde quotidienne:', error);
return {
backupPerformed: false,
message: `Erreur: ${error instanceof Error ? error.message : 'Erreur inconnue'}`
};
}
}
private scheduleAutomaticBackup(): void {
// Check for automatic backup every hour
const checkBackupNeeded = async () => {