Files
forkmessager/client-mobile/core/database/data/Migrations.kt
T

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