40 lines
1.6 KiB
Kotlin
40 lines
1.6 KiB
Kotlin
package core.database.data
|
||
|
||
import androidx.room.migration.Migration
|
||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||
|
||
/**
|
||
* Миграция с версии 1 на версию 2
|
||
* Добавляет поля для офлайн-синхронизации:
|
||
* - syncStatus (TEXT, по умолчанию 'SYNCED')
|
||
* - isDeletedLocally (INTEGER, по умолчанию 0)
|
||
* - isEditedLocally (INTEGER, по умолчанию 0)
|
||
* - editedContent (TEXT, nullable)
|
||
* - lastUpdated (INTEGER, по умолчанию текущее время)
|
||
*/
|
||
val MIGRATION_1_2 = object : Migration(1, 2) {
|
||
override fun migrate(database: SupportSQLiteDatabase) {
|
||
// Добавляем новые колонки для синхронизации
|
||
database.execSQL("""
|
||
ALTER TABLE messages ADD COLUMN syncStatus TEXT NOT NULL DEFAULT 'SYNCED'
|
||
""".trimIndent())
|
||
|
||
database.execSQL("""
|
||
ALTER TABLE messages ADD COLUMN isDeletedLocally INTEGER NOT NULL DEFAULT 0
|
||
""".trimIndent())
|
||
|
||
database.execSQL("""
|
||
ALTER TABLE messages ADD COLUMN isEditedLocally INTEGER NOT NULL DEFAULT 0
|
||
""".trimIndent())
|
||
|
||
database.execSQL("""
|
||
ALTER TABLE messages ADD COLUMN editedContent TEXT
|
||
""".trimIndent())
|
||
|
||
// lastUpdated по умолчанию 0, будет обновлён при первой синхронизации
|
||
database.execSQL("""
|
||
ALTER TABLE messages ADD COLUMN lastUpdated INTEGER NOT NULL DEFAULT 0
|
||
""".trimIndent())
|
||
}
|
||
}
|