subscribeMigrationProgress()

in ui/src/app/components/prepare-migration/prepare-migration.component.ts [808:921]


  subscribeMigrationProgress() {
    var displayStreamingMsg = false
    this.subscription = interval(5000).subscribe((x) => {
      this.fetch.getProgress().subscribe({
        next: (res: IProgress) => {
          if (res.ErrorMessage == '') {
            // Checking for completion of schema migration
            if (res.ProgressStatus == ProgressStatus.SchemaMigrationComplete) {
              localStorage.setItem(MigrationDetails.SchemaMigrationProgress, '100')
              this.schemaMigrationProgress = parseInt(
                localStorage.getItem(MigrationDetails.SchemaMigrationProgress) as string
              )
              if (this.selectedMigrationMode == MigrationModes.schemaOnly) {
                this.markMigrationComplete()
              } else if (this.selectedMigrationType == MigrationTypes.lowDowntimeMigration) {
                this.markSchemaMigrationComplete()
                this.generatingResources = true
                localStorage.setItem(
                  MigrationDetails.GeneratingResources,
                  this.generatingResources.toString()
                )
                if (!displayStreamingMsg) {
                  this.snack.openSnackBar('Setting up dataflow and datastream jobs', 'Close')
                  displayStreamingMsg = true
                }
              } else {
                this.markSchemaMigrationComplete()
                this.hasDataMigrationStarted = true
                localStorage.setItem(
                  MigrationDetails.HasDataMigrationStarted,
                  this.hasDataMigrationStarted.toString()
                )
              }
            } else if (res.ProgressStatus == ProgressStatus.DataMigrationComplete) {
              if (this.selectedMigrationType != MigrationTypes.lowDowntimeMigration) {
                this.hasDataMigrationStarted = true
                localStorage.setItem(
                  MigrationDetails.HasDataMigrationStarted,
                  this.hasDataMigrationStarted.toString()
                )
              }
              this.generatingResources = false
              localStorage.setItem(
                MigrationDetails.GeneratingResources,
                this.generatingResources.toString()
              )
              this.markMigrationComplete()
            }
            // Checking for data migration in progress
            else if (res.ProgressStatus == ProgressStatus.DataWriteInProgress) {
              this.markSchemaMigrationComplete()
              this.hasDataMigrationStarted = true
              localStorage.setItem(
                MigrationDetails.HasDataMigrationStarted,
                this.hasDataMigrationStarted.toString()
              )
              localStorage.setItem(MigrationDetails.DataMigrationProgress, res.Progress.toString())
              this.dataMigrationProgress = parseInt(
                localStorage.getItem(MigrationDetails.DataMigrationProgress) as string
              )
            } else if (res.ProgressStatus == ProgressStatus.ForeignKeyUpdateComplete) {
              this.markMigrationComplete()
            }
            // Checking for foreign key update in progress
            else if (res.ProgressStatus == ProgressStatus.ForeignKeyUpdateInProgress) {
              this.markSchemaMigrationComplete()
              if (this.selectedMigrationType == MigrationTypes.bulkMigration) {
                this.hasDataMigrationStarted = true
                localStorage.setItem(
                  MigrationDetails.HasDataMigrationStarted,
                  this.hasDataMigrationStarted.toString()
                )
              }
              this.markForeignKeyUpdateInitiation()
              this.dataMigrationProgress = 100
              localStorage.setItem(
                MigrationDetails.DataMigrationProgress,
                this.dataMigrationProgress.toString()
              )
              localStorage.setItem(
                MigrationDetails.ForeignKeyUpdateProgress,
                res.Progress.toString()
              )
              this.foreignKeyUpdateProgress = parseInt(
                localStorage.getItem(MigrationDetails.ForeignKeyUpdateProgress) as string
              )
              this.generatingResources = false
              localStorage.setItem(
                MigrationDetails.GeneratingResources,
                this.generatingResources.toString()
              )
              this.fetchGeneratedResources()
            }
          } else {
            this.errorMessage = res.ErrorMessage
            this.subscription.unsubscribe()
            this.isMigrationInProgress = !this.isMigrationInProgress
            this.snack.openSnackBarWithoutTimeout(this.errorMessage, 'Close')
            this.schemaProgressMessage = 'Schema migration cancelled!'
            this.dataProgressMessage = 'Data migration cancelled!'
            this.foreignKeyProgressMessage = 'Foreign key update cancelled!'
            this.generatingResources = false
            this.isLowDtMigrationRunning = false
            this.clearLocalStorage()
          }
        },
        error: (err: any) => {
          this.snack.openSnackBar(err.error, 'Close')
          this.isMigrationInProgress = !this.isMigrationInProgress
          this.clearLocalStorage()
        },
      })
    })
  }