From c76c2bfe10437d8028cb4c526673d9f068b34df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Wed, 4 Mar 2026 21:44:09 +0100 Subject: [PATCH 1/2] feat(driver-coroutines): Add the method MongoCollection.newId() --- .../src/commonMain/kotlin/FilteredCollection.kt | 4 ++++ driver-coroutines/src/commonMain/kotlin/MongoCollection.kt | 4 +++- driver-coroutines/src/jvmMain/kotlin/JvmMongoCollection.kt | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/driver-coroutines/src/commonMain/kotlin/FilteredCollection.kt b/driver-coroutines/src/commonMain/kotlin/FilteredCollection.kt index d68f8b5b..31569081 100644 --- a/driver-coroutines/src/commonMain/kotlin/FilteredCollection.kt +++ b/driver-coroutines/src/commonMain/kotlin/FilteredCollection.kt @@ -16,6 +16,7 @@ package opensavvy.ktmongo.coroutines +import opensavvy.ktmongo.bson.types.ObjectId import opensavvy.ktmongo.coroutines.operations.UpdateOperations.UpdateResult import opensavvy.ktmongo.coroutines.operations.UpdateOperations.UpsertResult import opensavvy.ktmongo.dsl.BsonContext @@ -259,6 +260,9 @@ private class FilteredCollection( return "$upstream.filter $filter" } + + override fun newId(): ObjectId = + upstream.newId() } /** diff --git a/driver-coroutines/src/commonMain/kotlin/MongoCollection.kt b/driver-coroutines/src/commonMain/kotlin/MongoCollection.kt index 9dcef16f..8ceb1495 100644 --- a/driver-coroutines/src/commonMain/kotlin/MongoCollection.kt +++ b/driver-coroutines/src/commonMain/kotlin/MongoCollection.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024-2025, OpenSavvy and contributors. + * Copyright (c) 2024-2026, OpenSavvy and contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package opensavvy.ktmongo.coroutines +import opensavvy.ktmongo.bson.types.ObjectIdGenerator import opensavvy.ktmongo.coroutines.operations.* /** @@ -44,6 +45,7 @@ import opensavvy.ktmongo.coroutines.operations.* * - [Official documentation](https://www.mongodb.com/docs/manual/tutorial/query-documents) */ interface MongoCollection : + ObjectIdGenerator, FindOperations, CountOperations, UpdateOperations, diff --git a/driver-coroutines/src/jvmMain/kotlin/JvmMongoCollection.kt b/driver-coroutines/src/jvmMain/kotlin/JvmMongoCollection.kt index f845d881..b163df09 100644 --- a/driver-coroutines/src/jvmMain/kotlin/JvmMongoCollection.kt +++ b/driver-coroutines/src/jvmMain/kotlin/JvmMongoCollection.kt @@ -24,6 +24,7 @@ import kotlinx.coroutines.flow.firstOrNull import opensavvy.ktmongo.bson.BsonValueReader import opensavvy.ktmongo.bson.official.JvmBsonFactory import opensavvy.ktmongo.bson.official.types.Jvm +import opensavvy.ktmongo.bson.types.ObjectId import opensavvy.ktmongo.bson.types.ObjectIdGenerator import opensavvy.ktmongo.coroutines.operations.UpdateOperations.UpdateResult import opensavvy.ktmongo.coroutines.operations.UpdateOperations.UpsertResult @@ -74,6 +75,10 @@ class JvmMongoCollection internal constructor( @OptIn(LowLevelApi::class) private val inner = inner.withCodecRegistry(context.codecRegistry) + @OptIn(LowLevelApi::class) + override fun newId(): ObjectId = + context.newId() + // region Find override fun find(): JvmMongoIterable = -- 2.51.2 From 3979c3b0d15283f0015106c0861d61602e057d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=E2=80=9CCLOVIS=E2=80=9D=20Canet?= Date: Wed, 4 Mar 2026 21:45:49 +0100 Subject: [PATCH 2/2] feat(driver-sync): Add the method MongoCollection.newId() --- driver-sync/src/commonMain/kotlin/FilteredCollection.kt | 4 ++++ driver-sync/src/commonMain/kotlin/MongoCollection.kt | 4 +++- driver-sync/src/jvmMain/kotlin/JvmMongoCollection.kt | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/driver-sync/src/commonMain/kotlin/FilteredCollection.kt b/driver-sync/src/commonMain/kotlin/FilteredCollection.kt index 4b852647..b497a843 100644 --- a/driver-sync/src/commonMain/kotlin/FilteredCollection.kt +++ b/driver-sync/src/commonMain/kotlin/FilteredCollection.kt @@ -16,6 +16,7 @@ package opensavvy.ktmongo.sync +import opensavvy.ktmongo.bson.types.ObjectId import opensavvy.ktmongo.dsl.BsonContext import opensavvy.ktmongo.dsl.LowLevelApi import opensavvy.ktmongo.dsl.command.* @@ -259,6 +260,9 @@ private class FilteredCollection( return "$upstream.filter $filter" } + + override fun newId(): ObjectId = + upstream.newId() } /** diff --git a/driver-sync/src/commonMain/kotlin/MongoCollection.kt b/driver-sync/src/commonMain/kotlin/MongoCollection.kt index 49b0292e..2a41575b 100644 --- a/driver-sync/src/commonMain/kotlin/MongoCollection.kt +++ b/driver-sync/src/commonMain/kotlin/MongoCollection.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024-2025, OpenSavvy and contributors. + * Copyright (c) 2024-2026, OpenSavvy and contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package opensavvy.ktmongo.sync +import opensavvy.ktmongo.bson.types.ObjectIdGenerator import opensavvy.ktmongo.sync.operations.* /** @@ -44,6 +45,7 @@ import opensavvy.ktmongo.sync.operations.* * - [Official documentation](https://www.mongodb.com/docs/manual/tutorial/query-documents) */ interface MongoCollection : + ObjectIdGenerator, FindOperations, CountOperations, UpdateOperations, diff --git a/driver-sync/src/jvmMain/kotlin/JvmMongoCollection.kt b/driver-sync/src/jvmMain/kotlin/JvmMongoCollection.kt index fe7b7cd2..efa9cb81 100644 --- a/driver-sync/src/jvmMain/kotlin/JvmMongoCollection.kt +++ b/driver-sync/src/jvmMain/kotlin/JvmMongoCollection.kt @@ -22,6 +22,7 @@ import com.mongodb.client.model.UpdateOptions import opensavvy.ktmongo.bson.BsonValueReader import opensavvy.ktmongo.bson.official.JvmBsonFactory import opensavvy.ktmongo.bson.official.types.Jvm +import opensavvy.ktmongo.bson.types.ObjectId import opensavvy.ktmongo.bson.types.ObjectIdGenerator import opensavvy.ktmongo.dsl.LowLevelApi import opensavvy.ktmongo.dsl.aggregation.PipelineChainLink @@ -72,6 +73,10 @@ class JvmMongoCollection internal constructor( @OptIn(LowLevelApi::class) private val inner = inner.withCodecRegistry(context.codecRegistry) + @OptIn(LowLevelApi::class) + override fun newId(): ObjectId = + context.newId() + // region Find override fun find(): JvmMongoIterable = -- 2.51.2