|  |  | @ -30,11 +30,10 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |     static patchList = { | 
			
		
	
		
			
				
					|  |  |  |         "patch-setting-value-type.sql": true, | 
			
		
	
		
			
				
					|  |  |  |         "patch-improve-performance.sql": true, | 
			
		
	
		
			
				
					|  |  |  |         "patch-monitor-public.sql": true, | 
			
		
	
		
			
				
					|  |  |  |         "patch-2fa.sql": true, | 
			
		
	
		
			
				
					|  |  |  |         "patch-add-retry-interval-monitor.sql": true, | 
			
		
	
		
			
				
					|  |  |  |         "patch-monitor-public-weight.sql": true, | 
			
		
	
		
			
				
					|  |  |  |         "patch-incident-table.sql": true, | 
			
		
	
		
			
				
					|  |  |  |         "patch-group-table.sql": true, | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
	
		
			
				
					|  |  | @ -65,7 +64,7 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         // Auto map the model to a bean object
 | 
			
		
	
		
			
				
					|  |  |  |         R.freeze(true) | 
			
		
	
		
			
				
					|  |  |  |         R.freeze(true); | 
			
		
	
		
			
				
					|  |  |  |         await R.autoloadModels("./server/model"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         // Change to WAL
 | 
			
		
	
	
		
			
				
					|  |  | @ -92,7 +91,7 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |         } else if (version > this.latestVersion) { | 
			
		
	
		
			
				
					|  |  |  |             console.info("Warning: Database version is newer than expected"); | 
			
		
	
		
			
				
					|  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |             console.info("Database patch is needed") | 
			
		
	
		
			
				
					|  |  |  |             console.info("Database patch is needed"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             this.backup(version); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -107,11 +106,12 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } catch (ex) { | 
			
		
	
		
			
				
					|  |  |  |                 await Database.close(); | 
			
		
	
		
			
				
					|  |  |  |                 this.restore(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 console.error(ex) | 
			
		
	
		
			
				
					|  |  |  |                 console.error("Start Uptime-Kuma failed due to patch db failed") | 
			
		
	
		
			
				
					|  |  |  |                 console.error("Please submit the bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues") | 
			
		
	
		
			
				
					|  |  |  |                 console.error(ex); | 
			
		
	
		
			
				
					|  |  |  |                 console.error("Start Uptime-Kuma failed due to patch db failed"); | 
			
		
	
		
			
				
					|  |  |  |                 console.error("Please submit the bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 this.restore(); | 
			
		
	
		
			
				
					|  |  |  |                 process.exit(1); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  | @ -136,7 +136,7 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         try { | 
			
		
	
		
			
				
					|  |  |  |             for (let sqlFilename in this.patchList) { | 
			
		
	
		
			
				
					|  |  |  |                 await this.patch2Recursion(sqlFilename, databasePatchedFiles) | 
			
		
	
		
			
				
					|  |  |  |                 await this.patch2Recursion(sqlFilename, databasePatchedFiles); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             if (this.patched) { | 
			
		
	
	
		
			
				
					|  |  | @ -145,11 +145,13 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         } catch (ex) { | 
			
		
	
		
			
				
					|  |  |  |             await Database.close(); | 
			
		
	
		
			
				
					|  |  |  |             this.restore(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             console.error(ex) | 
			
		
	
		
			
				
					|  |  |  |             console.error(ex); | 
			
		
	
		
			
				
					|  |  |  |             console.error("Start Uptime-Kuma failed due to patch db failed"); | 
			
		
	
		
			
				
					|  |  |  |             console.error("Please submit the bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             this.restore(); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             process.exit(1); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -189,7 +191,7 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |             console.log(sqlFilename + " is patched successfully"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |             console.log(sqlFilename + " is already patched, skip"); | 
			
		
	
		
			
				
					|  |  |  |             debug(sqlFilename + " is already patched, skip"); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | @ -207,12 +209,12 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |         // Remove all comments (--)
 | 
			
		
	
		
			
				
					|  |  |  |         let lines = text.split("\n"); | 
			
		
	
		
			
				
					|  |  |  |         lines = lines.filter((line) => { | 
			
		
	
		
			
				
					|  |  |  |             return ! line.startsWith("--") | 
			
		
	
		
			
				
					|  |  |  |             return ! line.startsWith("--"); | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         // Split statements by semicolon
 | 
			
		
	
		
			
				
					|  |  |  |         // Filter out empty line
 | 
			
		
	
		
			
				
					|  |  |  |         text = lines.join("\n") | 
			
		
	
		
			
				
					|  |  |  |         text = lines.join("\n"); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         let statements = text.split(";") | 
			
		
	
		
			
				
					|  |  |  |             .map((statement) => { | 
			
		
	
	
		
			
				
					|  |  | @ -220,7 +222,7 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |             }) | 
			
		
	
		
			
				
					|  |  |  |             .filter((statement) => { | 
			
		
	
		
			
				
					|  |  |  |                 return statement !== ""; | 
			
		
	
		
			
				
					|  |  |  |             }) | 
			
		
	
		
			
				
					|  |  |  |             }); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         for (let statement of statements) { | 
			
		
	
		
			
				
					|  |  |  |             await R.exec(statement); | 
			
		
	
	
		
			
				
					|  |  | @ -266,7 +268,7 @@ class Database { | 
			
		
	
		
			
				
					|  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |     static backup(version) { | 
			
		
	
		
			
				
					|  |  |  |         if (! this.backupPath) { | 
			
		
	
		
			
				
					|  |  |  |             console.info("Backup the db") | 
			
		
	
		
			
				
					|  |  |  |             console.info("Backup the db"); | 
			
		
	
		
			
				
					|  |  |  |             this.backupPath = this.dataDir + "kuma.db.bak" + version; | 
			
		
	
		
			
				
					|  |  |  |             fs.copyFileSync(Database.path, this.backupPath); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  | 
 |