From 78c5b6b2a552df1c88ac0b194dc682cc1d90c35a Mon Sep 17 00:00:00 2001 From: Kacper Ziubryniewicz Date: Tue, 4 Feb 2020 00:31:56 +0100 Subject: [PATCH] [Database] Fix migrations from 3.2.1 to 4.0-beta. --- .../szczodrzynski/edziennik/data/db/AppDb.kt | 5 ++- .../data/db/migration/Migration56.kt | 2 +- .../data/db/migration/Migration76.kt | 39 +++++++++---------- .../data/db/migration/Migration77.kt | 16 ++++++++ 4 files changed, 39 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration77.kt diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/AppDb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/AppDb.kt index f875a117..8d521e83 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/AppDb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/AppDb.kt @@ -42,7 +42,7 @@ import pl.szczodrzynski.edziennik.data.db.migration.* ConfigEntry::class, LibrusLesson::class, Metadata::class -], version = 76) +], version = 77) @TypeConverters( ConverterTime::class, ConverterDate::class, @@ -159,7 +159,8 @@ abstract class AppDb : RoomDatabase() { Migration73(), Migration74(), Migration75(), - Migration76() + Migration76(), + Migration77() ).allowMainThreadQueries().build() } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration56.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration56.kt index 4d04633e..4517b078 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration56.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration56.kt @@ -21,7 +21,7 @@ class Migration56 : Migration(55, 56) { profileId INTEGER NOT NULL, lessonRangeNumber INTEGER NOT NULL, lessonRangeStart TEXT NOT NULL, - LessonRangeEnd TEXT NOT NULL, + lessonRangeEnd TEXT NOT NULL, PRIMARY KEY(profileId, lessonRangeNumber))""") } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration76.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration76.kt index 4faa02bc..a8d5bf1b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration76.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration76.kt @@ -10,26 +10,25 @@ import androidx.sqlite.db.SupportSQLiteDatabase class Migration76 : Migration(75, 76) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE feedbackMessages RENAME TO _feedbackMessages;") - database.execSQL("CREATE TABLE feedbackMessages (\n" + - "\tmessageId INTEGER NOT NULL PRIMARY KEY,\n" + - "\treceived INTEGER NOT NULL,\n" + - "\ttext TEXT NOT NULL,\n" + - "\tsenderName TEXT NOT NULL,\n" + - "\tdeviceId TEXT DEFAULT NULL,\n" + - "\tdeviceName TEXT DEFAULT NULL,\n" + - "\tdevId INTEGER DEFAULT NULL,\n" + - "\tdevImage TEXT DEFAULT NULL,\n" + - "\tsentTime INTEGER NOT NULL\n" + - ");") - database.execSQL("INSERT INTO feedbackMessages (messageId, received, text, senderName, deviceId, deviceName, devId, devImage, sentTime)\n" + - "SELECT messageId, received, text,\n" + - "CASE fromUser IS NOT NULL WHEN 1 THEN CASE fromUserName IS NULL WHEN 1 THEN \"\" ELSE fromUserName END ELSE \"\" END AS senderName,\n" + - "fromUser AS deviceId,\n" + - "NULL AS deviceName,\n" + - "CASE received AND fromUser IS NULL WHEN 1 THEN 100 ELSE NULL END AS devId,\n" + - "NULL AS devImage,\n" + - "sentTime\n" + - "FROM _feedbackMessages;") + database.execSQL("""CREATE TABLE feedbackMessages ( + messageId INTEGER NOT NULL PRIMARY KEY, + received INTEGER NOT NULL, + text TEXT NOT NULL, + senderName TEXT NOT NULL, + deviceId TEXT DEFAULT NULL, + deviceName TEXT DEFAULT NULL, + devId INTEGER DEFAULT NULL, + devImage TEXT DEFAULT NULL, + sentTime INTEGER NOT NULL);""") + database.execSQL("""INSERT INTO feedbackMessages (messageId, received, text, senderName, deviceId, deviceName, devId, devImage, sentTime) + SELECT messageId, received, text, + CASE fromUser IS NOT NULL WHEN 1 THEN CASE fromUserName IS NULL WHEN 1 THEN "" ELSE fromUserName END ELSE "" END AS senderName, + fromUser AS deviceId, + NULL AS deviceName, + CASE received AND fromUser IS NULL WHEN 1 THEN 100 ELSE NULL END AS devId, + NULL AS devImage, + sentTime + FROM _feedbackMessages;""") database.execSQL("DROP TABLE _feedbackMessages;") } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration77.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration77.kt new file mode 100644 index 00000000..ad2d28ea --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration77.kt @@ -0,0 +1,16 @@ +package pl.szczodrzynski.edziennik.data.db.migration + +import androidx.room.migration.Migration +import androidx.sqlite.db.SupportSQLiteDatabase + +class Migration77 : Migration(76, 77) { + override fun migrate(database: SupportSQLiteDatabase) { + database.execSQL("DROP TABLE lessonRanges") + database.execSQL("""CREATE TABLE IF NOT EXISTS lessonRanges ( + profileId INTEGER NOT NULL, + lessonRangeNumber INTEGER NOT NULL, + lessonRangeStart TEXT NOT NULL, + lessonRangeEnd TEXT NOT NULL, + PRIMARY KEY(profileId, lessonRangeNumber))""") + } +}