[Database] Fix migrations from 3.2.1 to 4.0-beta.

This commit is contained in:
Kacper Ziubryniewicz 2020-02-04 00:31:56 +01:00
parent 60a3c38951
commit 78c5b6b2a5
4 changed files with 39 additions and 23 deletions

View File

@ -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()
}
}

View File

@ -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))""")
}
}

View File

@ -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;")
}
}

View File

@ -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))""")
}
}