[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, ConfigEntry::class,
LibrusLesson::class, LibrusLesson::class,
Metadata::class Metadata::class
], version = 76) ], version = 77)
@TypeConverters( @TypeConverters(
ConverterTime::class, ConverterTime::class,
ConverterDate::class, ConverterDate::class,
@ -159,7 +159,8 @@ abstract class AppDb : RoomDatabase() {
Migration73(), Migration73(),
Migration74(), Migration74(),
Migration75(), Migration75(),
Migration76() Migration76(),
Migration77()
).allowMainThreadQueries().build() ).allowMainThreadQueries().build()
} }
} }

View File

@ -21,7 +21,7 @@ class Migration56 : Migration(55, 56) {
profileId INTEGER NOT NULL, profileId INTEGER NOT NULL,
lessonRangeNumber INTEGER NOT NULL, lessonRangeNumber INTEGER NOT NULL,
lessonRangeStart TEXT NOT NULL, lessonRangeStart TEXT NOT NULL,
LessonRangeEnd TEXT NOT NULL, lessonRangeEnd TEXT NOT NULL,
PRIMARY KEY(profileId, lessonRangeNumber))""") PRIMARY KEY(profileId, lessonRangeNumber))""")
} }
} }

View File

@ -10,26 +10,25 @@ import androidx.sqlite.db.SupportSQLiteDatabase
class Migration76 : Migration(75, 76) { class Migration76 : Migration(75, 76) {
override fun migrate(database: SupportSQLiteDatabase) { override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE feedbackMessages RENAME TO _feedbackMessages;") database.execSQL("ALTER TABLE feedbackMessages RENAME TO _feedbackMessages;")
database.execSQL("CREATE TABLE feedbackMessages (\n" + database.execSQL("""CREATE TABLE feedbackMessages (
"\tmessageId INTEGER NOT NULL PRIMARY KEY,\n" + messageId INTEGER NOT NULL PRIMARY KEY,
"\treceived INTEGER NOT NULL,\n" + received INTEGER NOT NULL,
"\ttext TEXT NOT NULL,\n" + text TEXT NOT NULL,
"\tsenderName TEXT NOT NULL,\n" + senderName TEXT NOT NULL,
"\tdeviceId TEXT DEFAULT NULL,\n" + deviceId TEXT DEFAULT NULL,
"\tdeviceName TEXT DEFAULT NULL,\n" + deviceName TEXT DEFAULT NULL,
"\tdevId INTEGER DEFAULT NULL,\n" + devId INTEGER DEFAULT NULL,
"\tdevImage TEXT DEFAULT NULL,\n" + devImage TEXT DEFAULT NULL,
"\tsentTime INTEGER NOT NULL\n" + sentTime INTEGER NOT NULL);""")
");") database.execSQL("""INSERT INTO feedbackMessages (messageId, received, text, senderName, deviceId, deviceName, devId, devImage, sentTime)
database.execSQL("INSERT INTO feedbackMessages (messageId, received, text, senderName, deviceId, deviceName, devId, devImage, sentTime)\n" + SELECT messageId, received, text,
"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,
"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,
"fromUser AS deviceId,\n" + NULL AS deviceName,
"NULL AS deviceName,\n" + CASE received AND fromUser IS NULL WHEN 1 THEN 100 ELSE NULL END AS devId,
"CASE received AND fromUser IS NULL WHEN 1 THEN 100 ELSE NULL END AS devId,\n" + NULL AS devImage,
"NULL AS devImage,\n" + sentTime
"sentTime\n" + FROM _feedbackMessages;""")
"FROM _feedbackMessages;")
database.execSQL("DROP TABLE _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))""")
}
}