Internal mapper collection declaration
Ability to declare a collection with a class:
object Users : DbDocument {
val _id by single<ObjectId>()
val name by single<String>()
val friends by array<Friends>()
}
object Friends : DbDocument {
val name: String by field()
}
collection.findOne {
Users.name eq "foo"
}
collection.findOne {
Users.friends.any.name eq "bar"
}
Optionally, allow internal mappers:
object Users : DbDocument<User> {
val _id by single<ObjectId>()
val name by single<String>()
val friends by array<Friends>()
override fun mapTo(data: BsonFieldReader): User =
User(
name = data[Users.name],
friends = data[Users.friends],
)
override fun BsonFieldWriter.mapFrom(user: User) {
writeDocument {
writeString(Users.name, user.name)
writeString(Users.friends, user.friends)
}
}
}