mindbox-cloud / ios-sdk

Other
6 stars 16 forks source link

MBX-3411: MigrationManager #428

Closed justSmK closed 3 months ago

justSmK commented 3 months ago

Добавить возможность использовать изменение версии SDK (поддержка миграций)#3411.

Последнее обсуждение и решения

Нужно провалидировать корректно ли я написал softReset(). Выше комментом оставил там имплементацию Android.

Постарался всё задокументировать из того, что будет использоваться далее при написании миграций.

Оставил миграции в файле Migrations для сборок для Андрея.

Сейчас миграции стартуют в CoreController до любой инициализации и даже до установки конфига в PersistenceStorage. Может надо его поставить после установки конфига? Или когда начнем миграции писать первые продовые, тогда перенесем туда, куда понадобится?

Процент покрытия кода `MigrationManager` image
Выпилил проверку в начале `migrate()`, которая должна была стопать процессы миграций раньше проверки на `isNeeded`, если константа и `sdkVersionCode` равны ```swift // Вот эта вещь не нужна при входе в `migrate()`, если мы не хотим полностью завязываться на `sdkVersionCode`. // Изначально писал, чтобы можно было при каждом последующем запуске скипать проверку на миграции, // если поводов для миграций нет. Но если мы учитываем, что может быть миграция, // которая не зависит от версии `sdkVersionCode`, то проверяться надобность миграций будет // только при помощи `isInstalled` guard persistenceStorage.versionCodeForMigration != localSdkVersionCode else { let message = "[Migrations] Migrations will not be perfromed. PersistenceStorage.versionCodeForMigrations is equal to constantForMigrations" Logger.common(message: message, level: .info, category: .migration) return } ```