From 6e3913d8e60931ee97c6b9fe736b176633bb19a5 Mon Sep 17 00:00:00 2001 From: ggabr <10714429-ggabr@users.noreply.gitlab.com> Date: Fri, 7 Feb 2025 14:24:46 +0100 Subject: [PATCH] Database, support migration from v2 to v3 SQL code taken (and verified and adapted) from https://gitlab.com/ggabr/AuroraStore/-/jobs/9073627105/artifacts/external_file/app/schemas/com.aurora.store.data.room.AuroraDatabase/3.json --- .../aurora/store/data/room/MigrationHelper.kt | 16 ++++++++++++++++ .../com/aurora/store/data/room/RoomModule.kt | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/aurora/store/data/room/MigrationHelper.kt b/app/src/main/java/com/aurora/store/data/room/MigrationHelper.kt index 13f6f98dc..a5dffd411 100644 --- a/app/src/main/java/com/aurora/store/data/room/MigrationHelper.kt +++ b/app/src/main/java/com/aurora/store/data/room/MigrationHelper.kt @@ -14,6 +14,10 @@ object MigrationHelper { override fun migrate(db: SupportSQLiteDatabase) = migrateFrom1To2(db) } + val MIGRATION_2_3 = object : Migration(2, 3) { + override fun migrate(db: SupportSQLiteDatabase) = migrateFrom2To3(db) + } + val MIGRATION_3_4 = object : Migration(3, 4) { override fun migrate(db: SupportSQLiteDatabase) = migrateFrom3To4(db) } @@ -36,6 +40,18 @@ object MigrationHelper { } } + private fun migrateFrom2To3(database: SupportSQLiteDatabase) { + database.beginTransaction() + try { + database.execSQL("CREATE TABLE `update` (`packageName` TEXT NOT NULL, `versionCode` INTEGER NOT NULL, `versionName` TEXT NOT NULL, `displayName` TEXT NOT NULL, `iconURL` TEXT NOT NULL, `changelog` TEXT NOT NULL, `id` INTEGER NOT NULL, `developerName` TEXT NOT NULL, `size` INTEGER NOT NULL, `updatedOn` TEXT NOT NULL, `hasValidCert` INTEGER NOT NULL, `offerType` INTEGER NOT NULL, `fileList` TEXT NOT NULL, `sharedLibs` TEXT NOT NULL, PRIMARY KEY(`packageName`))") + database.setTransactionSuccessful() + } catch (exception: Exception) { + Log.e(TAG, "Failed while migrating from database version 2 to 3", exception) + } finally { + database.endTransaction() + } + } + /** * Add targetSdk column to download and update table for checking if silent install is possible. */ diff --git a/app/src/main/java/com/aurora/store/data/room/RoomModule.kt b/app/src/main/java/com/aurora/store/data/room/RoomModule.kt index 17edb8119..00cffc0bd 100644 --- a/app/src/main/java/com/aurora/store/data/room/RoomModule.kt +++ b/app/src/main/java/com/aurora/store/data/room/RoomModule.kt @@ -3,6 +3,7 @@ package com.aurora.store.data.room import android.content.Context import androidx.room.Room import com.aurora.store.data.room.MigrationHelper.MIGRATION_1_2 +import com.aurora.store.data.room.MigrationHelper.MIGRATION_2_3 import com.aurora.store.data.room.MigrationHelper.MIGRATION_3_4 import com.aurora.store.data.room.MigrationHelper.MIGRATION_4_5 import com.aurora.store.data.room.download.DownloadConverter @@ -29,7 +30,7 @@ object RoomModule { downloadConverter: DownloadConverter ): AuroraDatabase { return Room.databaseBuilder(context, AuroraDatabase::class.java, DATABASE) - .addMigrations(MIGRATION_1_2, MIGRATION_3_4, MIGRATION_4_5) + .addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5) .addTypeConverter(downloadConverter) .build() }