Replace insert with upsert
authorTheSaminator <TheSaminator@users.noreply.github.com>
Tue, 31 May 2022 17:11:15 +0000 (13:11 -0400)
committerTheSaminator <TheSaminator@users.noreply.github.com>
Tue, 31 May 2022 17:11:15 +0000 (13:11 -0400)
src/jvmMain/kotlin/starshipfights/data/data_documents.kt

index 948739b71cc9311ec8febfa8b7c750022f30f83a..64a0e647123ea1fb4dac8a5e0eaee41e7bf82b01 100644 (file)
@@ -7,8 +7,9 @@ import kotlinx.coroutines.flow.Flow
 import kotlinx.serialization.SerialName
 import org.bson.conversions.Bson
 import org.litote.kmongo.coroutine.coroutine
-import org.litote.kmongo.insertOne
+import org.litote.kmongo.replaceOne
 import org.litote.kmongo.serialization.IdController
+import org.litote.kmongo.util.KMongoUtil
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 import kotlin.coroutines.CoroutineContext
@@ -97,7 +98,9 @@ private class DocumentTableImpl<T : DataDocument<T>>(val kclass: KClass<T>, priv
        
        override suspend fun put(docs: Iterable<T>) {
                collection().bulkWrite(
-                       docs.map { insertOne(it) },
+                       docs.map { doc ->
+                               replaceOne(KMongoUtil.idFilterQuery(doc.id), doc, ReplaceOptions().upsert(true))
+                       },
                        BulkWriteOptions().ordered(false)
                )
        }