В моем приложении у меня есть 2 разных модуля. Я решил разделить файлы этой области, имея 2 разных файла области, каждый из которых имеет свой собственный модуль и имя. Я вызвал приведенный ниже код дважды для каждого отдельного модуля
RealmConfiguration.Builder()
.name(FIRST_DB_NAME) //SECOND_DB_NAME
.schemaVersion(VERSION)
.migration(RealmMigration())
.modules(AppRealmModule()) //for the seconds database -> UserRealmModule()
Однако, когда я поднимаю версию базы данных области и немного изменяю схему области (в этом случае добавление предыдущего класса области к AppRealmModule
, что уже было в UserRealmModule
), миграция области вызывается только один раз.
abstract class StorageRealmMigration : RealmMigration {
override fun migrate(realm: DynamicRealm, oldVersion: Long, newVersion: Long) {
//this is called only once, despite the version of both realm configurations passing from 1 to 2
}
}
В моем случае я хочу передать один класс области от UserRealmModule
до AppRealmModule
со всей текущей информацией. У меня что-то вроде этого:
override fun migrate(realm: DynamicRealm, oldVersion: Long, newVersion: Long) {
val isApplicationConfig = realm.configuration.realmFileName == applicationDatabaseName()
if(oldVersion <= FIRST_VERSION){
if(isApplicationConfig){
create(MigratedRealm::class.java.simpleName).apply{
//adding fields here
}
} else {
//this is never called :(
realm.executeTransaction {
results = it.where(MigratedRealm::class.java.simpleName).findAll()
//I NEED TO add results to ApplicationRealmModule
}
remove(MigratedRealm::class.java.simpleName)
}
}
}
Я что-то здесь не так делаю? Царство должно дважды вызвать миграцию, верно?