| 
						
						
							
								
							
						
						
					 | 
					@ -1087,27 +1087,8 @@ export async function migrateSettings(): Promise<MigrationResult> { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      let sqliteSettingRaw: | 
					 | 
					 | 
					      let sqliteSettingRaw: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        | { columns: string[]; values: unknown[][] } | 
					 | 
					 | 
					        | { columns: string[]; values: unknown[][] } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        | undefined; | 
					 | 
					 | 
					        | undefined; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					      if (!setting.accountDid) { | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        sqliteSettingRaw = await platformService.dbQuery( | 
					 | 
					 | 
					      // adjust SQL based on the accountDid key, maybe null
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					          "SELECT * FROM settings WHERE accountDid is null", | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      } else { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        sqliteSettingRaw = await platformService.dbQuery( | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          "SELECT * FROM settings WHERE accountDid = ?", | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          [setting.accountDid], | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      logger.info("[MigrationService] Migrating one set of settings:", { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        setting, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        sqliteSettingRaw, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      }); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      if (sqliteSettingRaw?.values?.length) { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        // should cover the master settings, were accountDid is null
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        const sqliteSettings = mapColumnsToValues( | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          sqliteSettingRaw.columns, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          sqliteSettingRaw.values, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ) as unknown as Settings[]; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        const sqliteSetting = sqliteSettings[0]; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					      let conditional: string; | 
					 | 
					 | 
					      let conditional: string; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      let preparams: unknown[]; | 
					 | 
					 | 
					      let preparams: unknown[]; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      if (!setting.accountDid) { | 
					 | 
					 | 
					      if (!setting.accountDid) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -1117,19 +1098,37 @@ export async function migrateSettings(): Promise<MigrationResult> { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        conditional = "accountDid = ?"; | 
					 | 
					 | 
					        conditional = "accountDid = ?"; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        preparams = [setting.accountDid]; | 
					 | 
					 | 
					        preparams = [setting.accountDid]; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      } | 
					 | 
					 | 
					      } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					      sqliteSettingRaw = await platformService.dbQuery( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        "SELECT * FROM settings WHERE " + conditional, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        preparams, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					      ); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					      logger.info("[MigrationService] Migrating one set of settings:", { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        setting, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        sqliteSettingRaw, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					      }); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					      if (sqliteSettingRaw?.values?.length) { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        // should cover the master settings, where accountDid is null
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        delete setting.id; // don't conflict with the id in the sqlite database
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        delete setting.accountDid; // this is part of the where clause
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        const { sql, params } = generateUpdateStatement( | 
					 | 
					 | 
					        const { sql, params } = generateUpdateStatement( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					          sqliteSetting as unknown as Record<string, unknown>, | 
					 | 
					 | 
					          setting, | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					          "settings", | 
					 | 
					 | 
					          "settings", | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          conditional, | 
					 | 
					 | 
					          conditional, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					          preparams, | 
					 | 
					 | 
					          preparams, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ); | 
					 | 
					 | 
					        ); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        logger.info("[MigrationService] Updating settings", { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					          sql, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					          params, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        }); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        await platformService.dbExec(sql, params); | 
					 | 
					 | 
					        await platformService.dbExec(sql, params); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        result.settingsMigrated++; | 
					 | 
					 | 
					        result.settingsMigrated++; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      } else { | 
					 | 
					 | 
					      } else { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        // insert new setting
 | 
					 | 
					 | 
					        // insert new setting
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        delete setting.id; // don't conflict with the id in the sqlite database
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        delete setting.activeDid; // ensure we don't set the activeDid (since master settings are an update and don't hit this case)
 | 
					 | 
					 | 
					        delete setting.activeDid; // ensure we don't set the activeDid (since master settings are an update and don't hit this case)
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        const { sql, params } = generateInsertStatement( | 
					 | 
					 | 
					        const { sql, params } = generateInsertStatement( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					          setting as unknown as Record<string, unknown>, | 
					 | 
					 | 
					          setting, | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					          "settings", | 
					 | 
					 | 
					          "settings", | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ); | 
					 | 
					 | 
					        ); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        await platformService.dbExec(sql, params); | 
					 | 
					 | 
					        await platformService.dbExec(sql, params); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -1140,9 +1139,6 @@ export async function migrateSettings(): Promise<MigrationResult> { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    // Wait for all migrations to complete
 | 
					 | 
					 | 
					    // Wait for all migrations to complete
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const updatedSettings = await Promise.all(migrationPromises); | 
					 | 
					 | 
					    const updatedSettings = await Promise.all(migrationPromises); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    // Step 2: Migrate the activeDid if it exists in Dexie
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    await migrateActiveDid(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    logger.info( | 
					 | 
					 | 
					    logger.info( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      "[MigrationService] Finished migrating settings", | 
					 | 
					 | 
					      "[MigrationService] Finished migrating settings", | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      updatedSettings, | 
					 | 
					 | 
					      updatedSettings, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -1283,96 +1279,6 @@ export async function migrateAccounts(): Promise<MigrationResult> { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  } | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/** | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * Migrates the activeDid from Dexie to SQLite | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * This function specifically handles the migration of the activeDid setting | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * from the Dexie database to the SQLite database. It ensures that the | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * activeDid exists in the SQLite accounts table before setting it as active. | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * The function is designed to be called after accounts have been migrated | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * to ensure the target DID exists in the SQLite database. | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * @async | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * @function migrateActiveDid | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * @returns {Promise<MigrationResult>} Result of the activeDid migration | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * @throws {Error} If the migration process fails | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * @example | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * ```typescript
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * try { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 *   const result = await migrateActiveDid(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 *   if (result.success) { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 *     console.log('ActiveDid migration successful'); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 *   } else { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 *     console.error('ActiveDid migration failed:', result.errors); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 *   } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * } catch (error) { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 *   console.error('ActiveDid migration process failed:', error); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * ``` | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 */ | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					export async function migrateActiveDid(): Promise<MigrationResult> { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  logger.info("[MigrationService] Starting activeDid migration"); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  const result: MigrationResult = { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    success: true, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    contactsMigrated: 0, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    settingsMigrated: 0, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    accountsMigrated: 0, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    errors: [], | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    warnings: [], | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  }; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  try { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    // Get Dexie settings to find the activeDid
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const dexieSettings = await getDexieSettings(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const masterSettings = dexieSettings.find(setting => !setting.accountDid); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					     | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if (!masterSettings?.activeDid) { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      logger.info("[MigrationService] No activeDid found in Dexie master settings"); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      result.warnings.push("No activeDid found in Dexie settings"); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      return result; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const dexieActiveDid = masterSettings.activeDid; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    logger.info("[MigrationService] Found activeDid in Dexie", { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      activeDid: dexieActiveDid, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    }); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const platformService = PlatformServiceFactory.getInstance(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    // Verify that the activeDid exists in SQLite accounts
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const accountExists = await platformService.dbQuery( | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      "SELECT did FROM accounts WHERE did = ?", | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      [dexieActiveDid], | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if (!accountExists?.values?.length) { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      const errorMessage = `activeDid from Dexie (${dexieActiveDid}) not found in SQLite accounts`; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      logger.error("[MigrationService]", errorMessage); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      result.errors.push(errorMessage); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      result.success = false; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      return result; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    // Update the master settings with the activeDid
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    await updateDefaultSettings({ activeDid: dexieActiveDid }); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					     | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    logger.info("[MigrationService] Successfully migrated activeDid", { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					      activeDid: dexieActiveDid, | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    }); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    result.warnings.push(`Successfully migrated activeDid: ${dexieActiveDid}`); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    return result; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  } catch (error) { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    const errorMessage = `ActiveDid migration failed: ${error}`; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    logger.error("[MigrationService]", errorMessage, error); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    result.errors.push(errorMessage); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    result.success = false; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    return result; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/** | 
					 | 
					 | 
					/** | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * Migrates all data from Dexie to SQLite in the proper order | 
					 | 
					 | 
					 * Migrates all data from Dexie to SQLite in the proper order | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 * | 
					 | 
					 | 
					 * | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |