@JvmInline
|
value class Image(@Contextual val binary: BsonBinary)
|
|
class ImageCodec : Codec<Image> {
|
override fun encode(writer: BsonWriter, value: Image, encoderContext: EncoderContext) {
|
writer.writeBinaryData(value.binary)
|
}
|
|
override fun decode(reader: BsonReader, decoderContext: DecoderContext): Image {
|
return Image(reader.readBinaryData())
|
}
|
|
override fun getEncoderClass(): Class<Image> = Image::class.java
|
}
|
|
fun main() {
|
|
val codecRegistry = CodecRegistries.fromRegistries(
|
CodecRegistries.fromCodecs(ImageCodec()),
|
MongoClientSettings.getDefaultCodecRegistry()
|
)
|
|
val mongoClient = MongoClient.create("mongodb://localhost/")
|
|
val db = mongoClient.getDatabase("test")
|
.withCodecRegistry(codecRegistry)
|
|
val img = Image(BsonBinary("asdfasdf".toByteArray()))
|
|
val collection = db.getCollection<Image>("test")
|
collection.drop()
|
|
println(collection.insertOne(img))
|
println(collection.find().toCollection(mutableListOf()))
|
|
mongoClient.close()
|
}
|