From 3b520b35c0c325350bcfcaa3161e78a3d18f503c Mon Sep 17 00:00:00 2001 From: Tobias Rohloff Date: Mon, 27 Aug 2018 11:53:00 +0200 Subject: [PATCH] Fix db schema migration and run it for affected users --- .../models/migrate/RealmSchemaMigration.java | 42 ++++++++++++------- build.gradle | 2 +- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/de/xikolo/models/migrate/RealmSchemaMigration.java b/app/src/main/java/de/xikolo/models/migrate/RealmSchemaMigration.java index 8ce9cf61e..f204f1e69 100644 --- a/app/src/main/java/de/xikolo/models/migrate/RealmSchemaMigration.java +++ b/app/src/main/java/de/xikolo/models/migrate/RealmSchemaMigration.java @@ -31,22 +31,34 @@ public void migrate(DynamicRealm realm, long oldVersion, long newVersion) { } if (oldVersion == 2) { - schema.create("Document") - .addField("id", String.class, FieldAttribute.PRIMARY_KEY) - .addField("title", String.class) - .addField("description", String.class) - .addRealmListField("tags", String.class) - .addField("isPublic", boolean.class) - .addRealmListField("courseIds", String.class); + // Document and DocumentLocalization were not added for some user, + // therefore a fix was provided with the next version. - schema.create("DocumentLocalization") - .addField("id", String.class, FieldAttribute.PRIMARY_KEY) - .addField("title", String.class) - .addField("description", String.class) - .addField("language", String.class) - .addField("revision", int.class) - .addField("fileUrl", String.class) - .addField("documentId", String.class); + oldVersion++; + } + + if (oldVersion == 3) { + // This DB version only fixes the last one. + if (!schema.contains("Document")) { + schema.create("Document") + .addField("id", String.class, FieldAttribute.PRIMARY_KEY) + .addField("title", String.class) + .addField("description", String.class) + .addRealmListField("tags", String.class) + .addField("isPublic", boolean.class) + .addRealmListField("courseIds", String.class); + } + + if (!schema.contains("DocumentLocalization")) { + schema.create("DocumentLocalization") + .addField("id", String.class, FieldAttribute.PRIMARY_KEY) + .addField("title", String.class) + .addField("description", String.class) + .addField("language", String.class) + .addField("revision", int.class) + .addField("fileUrl", String.class) + .addField("documentId", String.class); + } oldVersion++; } diff --git a/build.gradle b/build.gradle index cfdfbb3cf..a5d2fd6bc 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ buildscript { versionCode = 44 xikoloApiVersion = 3 - realmSchemaVersion = 3 + realmSchemaVersion = 4 } repositories { jcenter()