From 445f521b1f217206188cd7c2fcee2dc0ce34f230 Mon Sep 17 00:00:00 2001 From: DerGenaue <9513365-DerGenaue@users.noreply.gitlab.com> Date: Thu, 3 Oct 2024 00:52:01 +0200 Subject: [PATCH] Move walCheckpoint to RepositoryDao --- .../java/org/fdroid/fdroid/RepoUpdateManager.kt | 4 ++-- .../java/org/fdroid/database/AppPrefsDao.kt | 17 ----------------- .../java/org/fdroid/database/RepositoryDao.kt | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/RepoUpdateManager.kt b/app/src/main/java/org/fdroid/fdroid/RepoUpdateManager.kt index 2d7ae90ae..0b068617f 100644 --- a/app/src/main/java/org/fdroid/fdroid/RepoUpdateManager.kt +++ b/app/src/main/java/org/fdroid/fdroid/RepoUpdateManager.kt @@ -104,7 +104,7 @@ class RepoUpdateManager @JvmOverloads constructor( repoErrors.add(Pair(repo, result.e)) } } - db.getAppPrefsDao().walCheckpoint() + db.getRepositoryDao().walCheckpoint() fdroidPrefs.lastUpdateCheck = System.currentTimeMillis() if (repoErrors.isNotEmpty()) showRepoErrors(repoErrors) if (reposUpdated) { @@ -137,7 +137,7 @@ class RepoUpdateManager @JvmOverloads constructor( } finally { notificationManager.cancelUpdateRepoNotification() _isUpdating.value = false - db.getAppPrefsDao().walCheckpoint() + db.getRepositoryDao().walCheckpoint() } } diff --git a/libs/database/src/main/java/org/fdroid/database/AppPrefsDao.kt b/libs/database/src/main/java/org/fdroid/database/AppPrefsDao.kt index 9a7241bd1..f878e1466 100644 --- a/libs/database/src/main/java/org/fdroid/database/AppPrefsDao.kt +++ b/libs/database/src/main/java/org/fdroid/database/AppPrefsDao.kt @@ -8,20 +8,10 @@ import androidx.room.Insert import androidx.room.MapInfo import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query -import androidx.room.RawQuery -import androidx.sqlite.db.SimpleSQLiteQuery -import androidx.sqlite.db.SupportSQLiteQuery public interface AppPrefsDao { public fun getAppPrefs(packageName: String): LiveData public fun update(appPrefs: AppPrefs) - - /** - * Force a checkpoint on the SQLite WAL such that the file size gets reduced. - * Blocks until concurrent reads have finished. - * Useful to call after large inserts (repo update) - */ - public fun walCheckpoint() } @Dao @@ -59,11 +49,4 @@ internal interface AppPrefsDaoInt : AppPrefsDao { @Insert(onConflict = REPLACE) override fun update(appPrefs: AppPrefs) - override fun walCheckpoint() { - rawCheckpoint((SimpleSQLiteQuery("pragma wal_checkpoint(truncate)"))) - } - - @RawQuery - fun rawCheckpoint(supportSQLiteQuery: SupportSQLiteQuery): Int - } diff --git a/libs/database/src/main/java/org/fdroid/database/RepositoryDao.kt b/libs/database/src/main/java/org/fdroid/database/RepositoryDao.kt index f467d398b..9c56c8fda 100644 --- a/libs/database/src/main/java/org/fdroid/database/RepositoryDao.kt +++ b/libs/database/src/main/java/org/fdroid/database/RepositoryDao.kt @@ -6,9 +6,12 @@ import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy.Companion.REPLACE import androidx.room.Query +import androidx.room.RawQuery import androidx.room.RewriteQueriesToDropUnusedColumns import androidx.room.Transaction import androidx.room.Update +import androidx.sqlite.db.SimpleSQLiteQuery +import androidx.sqlite.db.SupportSQLiteQuery import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.decodeFromJsonElement import org.fdroid.database.DbDiffUtils.diffAndUpdateListTable @@ -87,6 +90,13 @@ public interface RepositoryDao { * Removes all repos and their preferences. */ public fun clearAll() + + /** + * Force a checkpoint on the SQLite WAL such that the file size gets reduced. + * Blocks until concurrent reads have finished. + * Useful to call after large inserts (repo update) + */ + public fun walCheckpoint() } @Dao @@ -527,4 +537,10 @@ internal interface RepositoryDaoInt : RepositoryDao { @Query("SELECT COUNT(*) FROM ${ReleaseChannel.TABLE}") fun countReleaseChannels(): Int + override fun walCheckpoint() { + rawCheckpoint((SimpleSQLiteQuery("pragma wal_checkpoint(truncate)"))) + } + + @RawQuery + fun rawCheckpoint(supportSQLiteQuery: SupportSQLiteQuery): Int }