diff --git a/bson-multiplatform/src/commonMain/kotlin/Bson.kt b/bson-multiplatform/src/commonMain/kotlin/Bson.kt index 1d3dc852..3aee6a50 100644 --- a/bson-multiplatform/src/commonMain/kotlin/Bson.kt +++ b/bson-multiplatform/src/commonMain/kotlin/Bson.kt @@ -20,6 +20,8 @@ import opensavvy.ktmongo.bson.Bson import opensavvy.ktmongo.bson.BsonArray import opensavvy.ktmongo.bson.BsonArrayReader import opensavvy.ktmongo.bson.BsonDocumentReader +import opensavvy.ktmongo.bson.multiplatform.impl.read.MultiplatformBsonArrayReader +import opensavvy.ktmongo.bson.multiplatform.impl.read.MultiplatformBsonDocumentReader import opensavvy.ktmongo.dsl.LowLevelApi class Bson internal constructor( diff --git a/bson-multiplatform/src/commonMain/kotlin/BsonContext.kt b/bson-multiplatform/src/commonMain/kotlin/BsonContext.kt index d251d37d..d9f30499 100644 --- a/bson-multiplatform/src/commonMain/kotlin/BsonContext.kt +++ b/bson-multiplatform/src/commonMain/kotlin/BsonContext.kt @@ -21,6 +21,8 @@ import kotlinx.io.readTo import opensavvy.ktmongo.bson.BsonContext import opensavvy.ktmongo.bson.BsonFieldWriter import opensavvy.ktmongo.bson.BsonValueWriter +import opensavvy.ktmongo.bson.multiplatform.impl.write.MultiplatformBsonArrayFieldWriter +import opensavvy.ktmongo.bson.multiplatform.impl.write.MultiplatformBsonFieldWriter import opensavvy.ktmongo.bson.types.ObjectIdGenerator import opensavvy.ktmongo.dsl.LowLevelApi import kotlin.concurrent.atomics.ExperimentalAtomicApi diff --git a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonArrayReader.kt b/bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonArrayReader.kt similarity index 93% rename from bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonArrayReader.kt rename to bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonArrayReader.kt index c3ba5f02..4a656d9f 100644 --- a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonArrayReader.kt +++ b/bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonArrayReader.kt @@ -14,11 +14,13 @@ * limitations under the License. */ -package opensavvy.ktmongo.bson.multiplatform +package opensavvy.ktmongo.bson.multiplatform.impl.read import opensavvy.ktmongo.bson.BsonArrayReader import opensavvy.ktmongo.bson.BsonType import opensavvy.ktmongo.bson.BsonValueReader +import opensavvy.ktmongo.bson.multiplatform.BsonArray +import opensavvy.ktmongo.bson.multiplatform.Bytes import opensavvy.ktmongo.dsl.LowLevelApi @LowLevelApi diff --git a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonDocumentReader.kt b/bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonDocumentReader.kt similarity index 95% rename from bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonDocumentReader.kt rename to bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonDocumentReader.kt index 34e63610..32e1fa16 100644 --- a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonDocumentReader.kt +++ b/bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonDocumentReader.kt @@ -14,12 +14,15 @@ * limitations under the License. */ -package opensavvy.ktmongo.bson.multiplatform +package opensavvy.ktmongo.bson.multiplatform.impl.read import kotlinx.io.readIntLe import opensavvy.ktmongo.bson.BsonDocumentReader import opensavvy.ktmongo.bson.BsonType import opensavvy.ktmongo.bson.BsonValueReader +import opensavvy.ktmongo.bson.multiplatform.Bson +import opensavvy.ktmongo.bson.multiplatform.Bytes +import opensavvy.ktmongo.bson.multiplatform.RawBsonReader import opensavvy.ktmongo.dsl.LowLevelApi internal fun restrictAsDocument(bytes: Bytes): Bytes { diff --git a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonValueReader.kt b/bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonValueReader.kt similarity index 97% rename from bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonValueReader.kt rename to bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonValueReader.kt index 9475cdab..55daf8e1 100644 --- a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonValueReader.kt +++ b/bson-multiplatform/src/commonMain/kotlin/impl/read/MultiplatformBsonValueReader.kt @@ -14,9 +14,11 @@ * limitations under the License. */ -package opensavvy.ktmongo.bson.multiplatform +package opensavvy.ktmongo.bson.multiplatform.impl.read import opensavvy.ktmongo.bson.* +import opensavvy.ktmongo.bson.multiplatform.Bytes +import opensavvy.ktmongo.bson.multiplatform.RawBsonWriter import opensavvy.ktmongo.bson.types.ObjectId import opensavvy.ktmongo.bson.types.Timestamp import opensavvy.ktmongo.dsl.DangerousMongoApi @@ -225,6 +227,7 @@ internal class MultiplatformBsonValueReader( else """{"${'$'}date": {"${'$'}numberLong": "$time"}}""" } + BsonType.BinaryData -> { val subType = readBinaryDataType() val data = readBinaryData() @@ -234,6 +237,7 @@ internal class MultiplatformBsonValueReader( """{"${'$'}binary": {"base64": "$base64", "subType": "${subType.toString(16).padStart(2, '0')}"}}""" } + BsonType.RegExp -> { val reader = bytes.reader val pattern = reader.readCString() @@ -243,11 +247,13 @@ internal class MultiplatformBsonValueReader( .replace("\"", "\\\"") """{"${'$'}regularExpression": {"pattern": "$escapedPattern", "options": "$options"}}""" } + BsonType.Timestamp -> { val timestamp = readTimestamp() """{"${'$'}timestamp": {"t": ${timestamp.instant.epochSeconds}, "i": ${timestamp.counter}}}""" } + BsonType.ObjectId -> """{"${'$'}oid": "${readObjectIdBytes().toHexString()}"}""" BsonType.MinKey -> """{"${'$'}minKey": 1}""" BsonType.MaxKey -> """{"${'$'}maxKey": 1}""" diff --git a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonArrayFieldWriter.kt b/bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonArrayFieldWriter.kt similarity index 98% rename from bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonArrayFieldWriter.kt rename to bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonArrayFieldWriter.kt index cad30287..767511a7 100644 --- a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonArrayFieldWriter.kt +++ b/bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonArrayFieldWriter.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package opensavvy.ktmongo.bson.multiplatform +package opensavvy.ktmongo.bson.multiplatform.impl.write import opensavvy.ktmongo.bson.BsonFieldWriter import opensavvy.ktmongo.bson.BsonValueWriter diff --git a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonFieldWriter.kt b/bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonFieldWriter.kt similarity index 96% rename from bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonFieldWriter.kt rename to bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonFieldWriter.kt index 61097047..7ce92443 100644 --- a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonFieldWriter.kt +++ b/bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonFieldWriter.kt @@ -14,13 +14,16 @@ * limitations under the License. */ -package opensavvy.ktmongo.bson.multiplatform +package opensavvy.ktmongo.bson.multiplatform.impl.write import kotlinx.io.Buffer import opensavvy.ktmongo.bson.BsonFieldWriter import opensavvy.ktmongo.bson.BsonType import opensavvy.ktmongo.bson.BsonValueWriter import opensavvy.ktmongo.bson.DEPRECATED_IN_BSON_SPEC +import opensavvy.ktmongo.bson.multiplatform.Bytes +import opensavvy.ktmongo.bson.multiplatform.RawBsonWriter +import opensavvy.ktmongo.bson.multiplatform.impl.read.MultiplatformBsonValueReader import opensavvy.ktmongo.bson.types.ObjectId import opensavvy.ktmongo.bson.types.Timestamp import opensavvy.ktmongo.dsl.DangerousMongoApi diff --git a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonSingleFieldWriter.kt b/bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonSingleFieldWriter.kt similarity index 96% rename from bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonSingleFieldWriter.kt rename to bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonSingleFieldWriter.kt index 56d252e6..dbd2f8b9 100644 --- a/bson-multiplatform/src/commonMain/kotlin/MultiplatformBsonSingleFieldWriter.kt +++ b/bson-multiplatform/src/commonMain/kotlin/impl/write/MultiplatformBsonSingleFieldWriter.kt @@ -14,13 +14,14 @@ * limitations under the License. */ -package opensavvy.ktmongo.bson.multiplatform +package opensavvy.ktmongo.bson.multiplatform.impl.write import opensavvy.ktmongo.bson.BsonFieldWriter import opensavvy.ktmongo.bson.BsonValueReader import opensavvy.ktmongo.bson.BsonValueWriter -import opensavvy.ktmongo.dsl.DangerousMongoApi +import opensavvy.ktmongo.bson.multiplatform.impl.read.MultiplatformBsonValueReader import opensavvy.ktmongo.bson.types.Timestamp +import opensavvy.ktmongo.dsl.DangerousMongoApi import opensavvy.ktmongo.dsl.LowLevelApi @LowLevelApi