63 lines
2.4 KiB
Kotlin
63 lines
2.4 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())
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Миграция с версии 2 на версию 3
|
|
* Добавляет таблицу chats для кэширования списка чатов
|
|
*/
|
|
val MIGRATION_2_3 = object : Migration(2, 3) {
|
|
override fun migrate(database: SupportSQLiteDatabase) {
|
|
database.execSQL("""
|
|
CREATE TABLE IF NOT EXISTS chats (
|
|
id TEXT PRIMARY KEY NOT NULL,
|
|
name TEXT NOT NULL,
|
|
avatar TEXT,
|
|
type TEXT NOT NULL DEFAULT 'personal',
|
|
lastMessageId TEXT,
|
|
lastMessageText TEXT,
|
|
lastMessageAt INTEGER NOT NULL DEFAULT 0,
|
|
unreadCount INTEGER NOT NULL DEFAULT 0,
|
|
isPinned INTEGER NOT NULL DEFAULT 0,
|
|
lastUpdated INTEGER NOT NULL DEFAULT 0
|
|
)
|
|
""".trimIndent())
|
|
}
|
|
}
|