From 51a4bcec5890dc45ddc8e94fe8bca2242cfdc6c7 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 3 Nov 2023 11:30:44 -0300 Subject: [PATCH] [db] don't allow initial repos from fixtures to provide weight The client was already auto-incrementing their weight anyway. But it leaked our internal weight handling into the library consumer which can cause issues like when me are making changes to how we handles repo weights as we are doing now. --- .../src/dbTest/java/org/fdroid/database/RepositoryDaoTest.kt | 3 +-- libs/database/src/main/java/org/fdroid/database/Repository.kt | 3 ++- .../src/main/java/org/fdroid/database/RepositoryDao.kt | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libs/database/src/dbTest/java/org/fdroid/database/RepositoryDaoTest.kt b/libs/database/src/dbTest/java/org/fdroid/database/RepositoryDaoTest.kt index 5b337e02d..1d2c6ac4c 100644 --- a/libs/database/src/dbTest/java/org/fdroid/database/RepositoryDaoTest.kt +++ b/libs/database/src/dbTest/java/org/fdroid/database/RepositoryDaoTest.kt @@ -30,7 +30,6 @@ internal class RepositoryDaoTest : DbTest() { certificate = "abcdef", // not random, because format gets checked version = Random.nextLong(), enabled = Random.nextBoolean(), - weight = Random.nextInt(), ) val repoId = repoDao.insert(repo) @@ -41,7 +40,7 @@ internal class RepositoryDaoTest : DbTest() { assertEquals(repo.certificate, actualRepo.certificate) assertEquals(repo.version, actualRepo.version) assertEquals(repo.enabled, actualRepo.enabled) - assertEquals(repo.weight, actualRepo.weight) + assertEquals(Int.MAX_VALUE - 2, actualRepo.weight) // ignoring provided weight assertEquals(-1, actualRepo.timestamp) assertEquals(3, actualRepo.mirrors.size) assertEquals(emptyList(), actualRepo.userMirrors) diff --git a/libs/database/src/main/java/org/fdroid/database/Repository.kt b/libs/database/src/main/java/org/fdroid/database/Repository.kt index 668bf9905..19b173cba 100644 --- a/libs/database/src/main/java/org/fdroid/database/Repository.kt +++ b/libs/database/src/main/java/org/fdroid/database/Repository.kt @@ -393,7 +393,8 @@ public data class InitialRepository @JvmOverloads constructor( val certificate: String, val version: Long, val enabled: Boolean, - val weight: Int, + @Deprecated("This is automatically assigned now and can be safely removed.") + val weight: Int = 0, // still used for testing, could be made internal or tests migrate away ) { init { validateCertificate(certificate) 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 7e2f9df97..929d4f344 100644 --- a/libs/database/src/main/java/org/fdroid/database/RepositoryDao.kt +++ b/libs/database/src/main/java/org/fdroid/database/RepositoryDao.kt @@ -127,9 +127,10 @@ internal interface RepositoryDaoInt : RepositoryDao { certificate = initialRepo.certificate, ) val repoId = insertOrReplace(repo) + val currentMinWeight = getMinRepositoryWeight() val repositoryPreferences = RepositoryPreferences( repoId = repoId, - weight = initialRepo.weight, + weight = currentMinWeight - 2, lastUpdated = null, enabled = initialRepo.enabled, )