mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-11-01 01:21:18 +01:00 
			
		
		
		
	feat(database): make backup schedule configurable via system keys (#4251)
This commit is contained in:
		
							parent
							
								
									528968bfe9
								
							
						
					
					
						commit
						8113728d3d
					
				@ -5,7 +5,7 @@
 | 
			
		||||
The newly introduced feature enhances the application with robust database backup and import capabilities. This feature is designed to ensure data integrity and provide a straightforward way to manage database backups. Here's how it works:
 | 
			
		||||
 | 
			
		||||
1. Automatic Backup Creation
 | 
			
		||||
   - The system automatically creates a database backup every day at midnight. This ensures that there is always a recent backup available, minimizing the risk of data loss.
 | 
			
		||||
   - The system automatically creates a database backup on a configurable schedule (default: daily at midnight via `system.databaseBackup.cron`). This ensures that there is always a recent backup available, minimizing the risk of data loss.
 | 
			
		||||
2. Manual Backup Export
 | 
			
		||||
   - Admin actions that modify the user database trigger a manual export of the database. This keeps the backup up-to-date with the latest changes and provides an extra layer of data security.
 | 
			
		||||
3. Importing Database Backups
 | 
			
		||||
 | 
			
		||||
@ -329,12 +329,18 @@ public class ApplicationProperties {
 | 
			
		||||
        private CustomPaths customPaths = new CustomPaths();
 | 
			
		||||
        private String fileUploadLimit;
 | 
			
		||||
        private TempFileManagement tempFileManagement = new TempFileManagement();
 | 
			
		||||
        private DatabaseBackup databaseBackup = new DatabaseBackup();
 | 
			
		||||
 | 
			
		||||
        public boolean isAnalyticsEnabled() {
 | 
			
		||||
            return this.getEnableAnalytics() != null && this.getEnableAnalytics();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Data
 | 
			
		||||
    public static class DatabaseBackup {
 | 
			
		||||
        private String cron = "0 0 0 * * ?"; // daily at midnight
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Data
 | 
			
		||||
    public static class CustomPaths {
 | 
			
		||||
        private Pipeline pipeline = new Pipeline();
 | 
			
		||||
 | 
			
		||||
@ -151,6 +151,8 @@ system:
 | 
			
		||||
    cleanupIntervalMinutes: 30 # How often to run cleanup (in minutes)
 | 
			
		||||
    startupCleanup: true # Clean up old temp files on startup
 | 
			
		||||
    cleanupSystemTemp: false # Whether to clean broader system temp directory
 | 
			
		||||
  databaseBackup:
 | 
			
		||||
    cron: '0 0 0 * * ?' # Cron expression for automatic database backups "0 0 0 * * ?" daily at midnight
 | 
			
		||||
 | 
			
		||||
ui:
 | 
			
		||||
  appName: '' # application's visible name
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,7 @@ public class ScheduledTasks {
 | 
			
		||||
 | 
			
		||||
    private final DatabaseServiceInterface databaseService;
 | 
			
		||||
 | 
			
		||||
    @Scheduled(cron = "0 0 0 * * ?")
 | 
			
		||||
    @Scheduled(cron = "#{applicationProperties.system.databaseBackup.cron}")
 | 
			
		||||
    public void performBackup() throws SQLException, UnsupportedProviderException {
 | 
			
		||||
        databaseService.exportDatabase();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user