mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	reorder database initialization so that all critical sections are in the same transaction, #1985
This commit is contained in:
		| @@ -82,6 +82,13 @@ async function createInitialDatabase(username, password, theme) { | ||||
|             isExpanded: true, | ||||
|             notePosition: 10 | ||||
|         }).save(); | ||||
|  | ||||
|         const optionsInitService = require('./options_init'); | ||||
|  | ||||
|         optionsInitService.initDocumentOptions(); | ||||
|         optionsInitService.initSyncedOptions(username, password); | ||||
|         optionsInitService.initNotSyncedOptions(true, { theme }); | ||||
|         optionsInitService.initStartupOptions(); | ||||
|     }); | ||||
|  | ||||
|     log.info("Importing demo content ..."); | ||||
| @@ -91,16 +98,20 @@ async function createInitialDatabase(username, password, theme) { | ||||
|     const zipImportService = require("./import/zip"); | ||||
|     await zipImportService.importZip(dummyTaskContext, demoFile, rootNote); | ||||
|  | ||||
|     log.info("Initializing options ..."); | ||||
|  | ||||
|     sql.transactional(() => { | ||||
|         // this needs to happen after ZIP import | ||||
|         // previous solution was to move option initialization here but then the important parts of initialization | ||||
|         // are not all in one transaction (because ZIP import is async and thus not transactional) | ||||
|  | ||||
|         const startNoteId = sql.getValue("SELECT noteId FROM branches WHERE parentNoteId = 'root' AND isDeleted = 0 ORDER BY notePosition"); | ||||
|  | ||||
|         const optionsInitService = require('./options_init'); | ||||
|  | ||||
|         optionsInitService.initDocumentOptions(); | ||||
|         optionsInitService.initSyncedOptions(username, password); | ||||
|         optionsInitService.initNotSyncedOptions(true, startNoteId, { theme }); | ||||
|         const optionService = require("./options"); | ||||
|         optionService.setOption('openTabs', JSON.stringify([ | ||||
|             { | ||||
|                 notePath: startNoteId, | ||||
|                 active: true | ||||
|             } | ||||
|         ])); | ||||
|     }); | ||||
|  | ||||
|     log.info("Schema and initial content generated."); | ||||
| @@ -120,7 +131,7 @@ function createDatabaseForSync(options, syncServerHost = '', syncProxy = '') { | ||||
|     sql.transactional(() => { | ||||
|         sql.executeScript(schema); | ||||
|  | ||||
|         require('./options_init').initNotSyncedOptions(false, 'root', { syncServerHost, syncProxy }); | ||||
|         require('./options_init').initNotSyncedOptions(false,  { syncServerHost, syncProxy }); | ||||
|  | ||||
|         // document options required for sync to kick off | ||||
|         for (const opt of options) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user