in datastore/src/main/scala/magnolify/datastore/EntityType.scala [161:193]
override def toEntity(v: T)(cm: CaseMapper): Entity.Builder =
caseClass.parameters.foldLeft(Entity.newBuilder()) { (eb, p) =>
val value = p.dereference(v)
val vb = p.typeclass.to(value)(cm)
if (vb != null) {
eb.putProperties(
cm.map(p.label),
vb.setExcludeFromIndexes(excludeFromIndexes(p.index))
.build()
)
}
if (p.index == keyIndex) {
val k = keyOpt.get
val partitionId = {
val b = PartitionId.newBuilder()
if (k.project != null) {
b.setProjectId(k.project)
}
b.setNamespaceId(if (k.namespace != null) k.namespace else caseClass.typeName.owner)
}
val path = {
val b = Key.PathElement.newBuilder()
b.setKind(if (k.kind != null) k.kind else caseClass.typeName.short)
p.typeclass.keyField.setKey(b, value)
}
val kb = Key
.newBuilder()
.setPartitionId(partitionId)
.addPath(path)
eb.setKey(kb)
}
eb
}