|  | @ -200,6 +200,28 @@ | 
			
		
	
		
		
			
				
					|  |  |           </div> |  |  |           </div> | 
			
		
	
		
		
			
				
					|  |  |         </div> |  |  |         </div> | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         <!-- Warning State --> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         <div | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           v-if="warning" | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           class="mb-6 bg-red-50 border border-red-200 rounded-lg p-4" | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         > | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           <div class="flex"> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             <div class="flex-shrink-0"> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |               <IconRenderer | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 icon-name="warning" | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 svg-class="h-5 w-5 text-red-400" | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 fill="currentColor" | 
			
		
	
		
		
			
				
					|  |  |  |  |  |               /> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             </div> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             <div class="ml-3"> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |               <h3 class="text-sm font-medium text-red-800">Warning</h3> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |               <div class="mt-2 text-sm text-red-700"> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 <p>{{ warning }}</p> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |               </div> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             </div> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           </div> | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         </div> | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |         <!-- Success State --> |  |  |         <!-- Success State --> | 
			
		
	
		
		
			
				
					|  |  |         <div |  |  |         <div | 
			
		
	
		
		
			
				
					|  |  |           v-if="successMessage" |  |  |           v-if="successMessage" | 
			
		
	
	
		
		
			
				
					|  | @ -1099,6 +1121,7 @@ export default class DatabaseMigration extends Vue { | 
			
		
	
		
		
			
				
					|  |  |   private isLoading = false; |  |  |   private isLoading = false; | 
			
		
	
		
		
			
				
					|  |  |   private loadingMessage = ""; |  |  |   private loadingMessage = ""; | 
			
		
	
		
		
			
				
					|  |  |   private error = ""; |  |  |   private error = ""; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |   private warning = ""; | 
			
		
	
		
		
			
				
					|  |  |   private exportedData: Record<string, any> | null = null; |  |  |   private exportedData: Record<string, any> | null = null; | 
			
		
	
		
		
			
				
					|  |  |   private successMessage = ""; |  |  |   private successMessage = ""; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  | @ -1248,6 +1271,7 @@ export default class DatabaseMigration extends Vue { | 
			
		
	
		
		
			
				
					|  |  |         this.successMessage = `Successfully migrated ${totalMigrated} total records: ${result.accountsMigrated} accounts, ${result.settingsMigrated} settings, ${result.contactsMigrated} contacts.`; |  |  |         this.successMessage = `Successfully migrated ${totalMigrated} total records: ${result.accountsMigrated} accounts, ${result.settingsMigrated} settings, ${result.contactsMigrated} contacts.`; | 
			
		
	
		
		
			
				
					|  |  |         if (result.warnings.length > 0) { |  |  |         if (result.warnings.length > 0) { | 
			
		
	
		
		
			
				
					|  |  |           this.successMessage += ` ${result.warnings.length} warnings.`; |  |  |           this.successMessage += ` ${result.warnings.length} warnings.`; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           this.warning += result.warnings.join(", "); | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |         this.successMessage += " Now finish by migrating contacts."; |  |  |         this.successMessage += " Now finish by migrating contacts."; | 
			
		
	
		
		
			
				
					|  |  |         logger.info( |  |  |         logger.info( | 
			
		
	
	
		
		
			
				
					|  | @ -1255,8 +1279,7 @@ export default class DatabaseMigration extends Vue { | 
			
		
	
		
		
			
				
					|  |  |           result, |  |  |           result, | 
			
		
	
		
		
			
				
					|  |  |         ); |  |  |         ); | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |         // Refresh comparison data after successful migration |  |  |         this.comparison = null; | 
			
				
				
			
		
	
		
		
			
				
					|  |  |         this.comparison = await compareDatabases(); |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					|  |  |       } else { |  |  |       } else { | 
			
		
	
		
		
			
				
					|  |  |         this.error = `Migration failed: ${result.errors.join(", ")}`; |  |  |         this.error = `Migration failed: ${result.errors.join(", ")}`; | 
			
		
	
		
		
			
				
					|  |  |         logger.error( |  |  |         logger.error( | 
			
		
	
	
		
		
			
				
					|  | @ -1342,14 +1365,14 @@ export default class DatabaseMigration extends Vue { | 
			
		
	
		
		
			
				
					|  |  |         this.successMessage = `Successfully migrated ${result.settingsMigrated} settings.`; |  |  |         this.successMessage = `Successfully migrated ${result.settingsMigrated} settings.`; | 
			
		
	
		
		
			
				
					|  |  |         if (result.warnings.length > 0) { |  |  |         if (result.warnings.length > 0) { | 
			
		
	
		
		
			
				
					|  |  |           this.successMessage += ` ${result.warnings.length} warnings.`; |  |  |           this.successMessage += ` ${result.warnings.length} warnings.`; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           this.warning += result.warnings.join(", "); | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |         logger.info( |  |  |         logger.info( | 
			
		
	
		
		
			
				
					|  |  |           "[DatabaseMigration] Settings migration completed successfully", |  |  |           "[DatabaseMigration] Settings migration completed successfully", | 
			
		
	
		
		
			
				
					|  |  |           result, |  |  |           result, | 
			
		
	
		
		
			
				
					|  |  |         ); |  |  |         ); | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |         // Refresh comparison data after successful migration |  |  |         this.comparison = null; | 
			
				
				
			
		
	
		
		
			
				
					|  |  |         this.comparison = await compareDatabases(); |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					|  |  |       } else { |  |  |       } else { | 
			
		
	
		
		
			
				
					|  |  |         this.error = `Migration failed: ${result.errors.join(", ")}`; |  |  |         this.error = `Migration failed: ${result.errors.join(", ")}`; | 
			
		
	
		
		
			
				
					|  |  |         logger.error( |  |  |         logger.error( | 
			
		
	
	
		
		
			
				
					|  | @ -1385,14 +1408,14 @@ export default class DatabaseMigration extends Vue { | 
			
		
	
		
		
			
				
					|  |  |         this.successMessage = `Successfully migrated ${result.accountsMigrated} accounts.`; |  |  |         this.successMessage = `Successfully migrated ${result.accountsMigrated} accounts.`; | 
			
		
	
		
		
			
				
					|  |  |         if (result.warnings.length > 0) { |  |  |         if (result.warnings.length > 0) { | 
			
		
	
		
		
			
				
					|  |  |           this.successMessage += ` ${result.warnings.length} warnings.`; |  |  |           this.successMessage += ` ${result.warnings.length} warnings.`; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |           this.warning += result.warnings.join(", "); | 
			
		
	
		
		
			
				
					|  |  |         } |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |         logger.info( |  |  |         logger.info( | 
			
		
	
		
		
			
				
					|  |  |           "[DatabaseMigration] Account migration completed successfully", |  |  |           "[DatabaseMigration] Account migration completed successfully", | 
			
		
	
		
		
			
				
					|  |  |           result, |  |  |           result, | 
			
		
	
		
		
			
				
					|  |  |         ); |  |  |         ); | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |         // Refresh comparison data after successful migration |  |  |         this.comparison = null; | 
			
				
				
			
		
	
		
		
			
				
					|  |  |         this.comparison = await compareDatabases(); |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					|  |  |       } else { |  |  |       } else { | 
			
		
	
		
		
			
				
					|  |  |         this.error = `Migration failed: ${result.errors.join(", ")}`; |  |  |         this.error = `Migration failed: ${result.errors.join(", ")}`; | 
			
		
	
		
		
			
				
					|  |  |         logger.error( |  |  |         logger.error( | 
			
		
	
	
		
		
			
				
					|  | 
 |