From 3e4aa20c3db8ebc3121991f8d1b9798f4ce44db0 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Fri, 24 Dec 2021 15:10:31 +0100 Subject: [PATCH] Fix: UNIQUE id failure for Repository --- src/main/kotlin/com/looker/droidify/database/DAOs.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/database/DAOs.kt b/src/main/kotlin/com/looker/droidify/database/DAOs.kt index 774b410d..2cff0b6d 100644 --- a/src/main/kotlin/com/looker/droidify/database/DAOs.kt +++ b/src/main/kotlin/com/looker/droidify/database/DAOs.kt @@ -10,7 +10,7 @@ import com.looker.droidify.entity.ProductItem interface BaseDao { - @Insert(onConflict = OnConflictStrategy.REPLACE) + @Insert fun insert(vararg product: T) @Update(onConflict = OnConflictStrategy.REPLACE) @@ -22,20 +22,23 @@ interface BaseDao { @Dao interface RepositoryDao : BaseDao { + @get:Query("SELECT COUNT(_id) FROM repository") + val count: Int + fun put(repository: com.looker.droidify.entity.Repository): com.looker.droidify.entity.Repository { repository.let { val dbRepo = Repository().apply { - id = it.id + if (it.id >= 0L) id = it.id enabled = if (it.enabled) 1 else 0 deleted = false data = it } - val newId = if (repository.id >= 0L) update(dbRepo).toLong() else returnInsert(dbRepo) + val newId = if (it.id > 0L) update(dbRepo).toLong() else returnInsert(dbRepo) return if (newId != repository.id) repository.copy(id = newId) else repository } } - @Insert(onConflict = OnConflictStrategy.REPLACE) + @Insert fun returnInsert(product: Repository): Long @Query("SELECT * FROM repository WHERE _id = :id and deleted == 0")