CodecProviderMacro
CodecProviderMacro is a utility object that provides inline macros for generating MongoDB CodecProvider instances for Scala case classes.
A CodecProvider wraps a generated Codec[T] so it can be plugged into the MongoDB driver’s CodecRegistry, allowing seamless serialization and deserialization of your domain models.
Two variants are supported:
createCodecProviderEncodeNoneencodesNonefields as BSONnull.createCodecProviderIgnoreNoneomitsNonefields entirely from the document.
==Quick Start== In your case class companion: {{ import io.github.mbannour.mongo.codecs.CodecProviderMacro import org.bson.codecs.configuration.CodecRegistries import org.mongodb.scala.MongoClient
case class Person(name: String, age: Int, nickname: Option[String])
object Person: // Choose encode-or-ignore None private val provider = CodecProviderMacro.createCodecProviderEncodeNone[Person]
given registry: CodecRegistry = CodecRegistries.fromRegistries( MongoClient.DEFAULT_CODEC_REGISTRY, CodecRegistries.fromProviders(provider) ) end Person }}
Then attach this registry to your database: {{ val client = MongoClient("mongodb://localhost") val db = client.getDatabase("mydb").withCodecRegistry(summon) val coll = db.getCollectionPerson coll.insertOne(Person("Alice", 30, None)).toFuture() }}
Attributes
- See also
-
CaseClassCodecGenerator.generateCodec for the underlying codec generator.
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
CodecProviderMacro.type