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