diff --git a/CHANGELOG.md b/CHANGELOG.md index a8b1a58daec..6d9502cc327 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.5.11 + +* `Repos`: + * `Common`: + * Fixes in `WriteOneToManyRepo#add` + * `Exposed`: + * Fixes in `ExposedOneToManyKeyValueRepo#add` + ## 0.5.10 * `Versions` diff --git a/gradle.properties b/gradle.properties index cb88500f55d..29762518c81 100644 --- a/gradle.properties +++ b/gradle.properties @@ -45,5 +45,5 @@ dokka_version=1.4.32 # Project data group=dev.inmo -version=0.5.10 -android_code_version=51 +version=0.5.11 +android_code_version=52 diff --git a/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/onetomany/OneToManyAndroidRepo.kt b/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/onetomany/OneToManyAndroidRepo.kt index 31c7be0ac99..1cc184fc2b4 100644 --- a/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/onetomany/OneToManyAndroidRepo.kt +++ b/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/onetomany/OneToManyAndroidRepo.kt @@ -55,6 +55,17 @@ class OneToManyAndroidRepo( helper.blockingWritableTransaction { for ((k, values) in toAdd) { values.forEach { v -> + val kAsString = k.keyAsString() + val vAsString = v.valueAsString() + val isThere = select(tableName, + null, + "$idColumnName=? AND $valueColumnName=?", + arrayOf(kAsString, vAsString), + limit = limitClause(1) + ).use { it.moveToFirst() } + if (isThere) { + return@forEach + } insert( tableName, null, diff --git a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/onetomany/ExposedOneToManyKeyValueRepo.kt b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/onetomany/ExposedOneToManyKeyValueRepo.kt index 86a4cb020cd..9d327ac846c 100644 --- a/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/onetomany/ExposedOneToManyKeyValueRepo.kt +++ b/repos/exposed/src/jvmMain/kotlin/dev/inmo/micro_utils/repos/exposed/onetomany/ExposedOneToManyKeyValueRepo.kt @@ -31,6 +31,9 @@ open class ExposedOneToManyKeyValueRepo( transaction(database) { toAdd.keys.flatMap { k -> toAdd[k] ?.mapNotNull { v -> + if (select { keyColumn.eq(k).and(valueColumn.eq(v)) }.limit(1).count() > 0) { + return@mapNotNull null + } insertIgnore { it[keyColumn] = k it[valueColumn] = v