RealmMigration вызывается только один раз, несмотря на наличие двух схем - PullRequest
0 голосов
/ 10 февраля 2020

В моем приложении у меня есть 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)
             }
        }
}

Я что-то здесь не так делаю? Царство должно дважды вызвать миграцию, верно?

...