in datastore/src/main/scala/magnolify/datastore/EntityType.scala [264:280]
implicit def efOption[T](implicit f: EntityField[T]): EntityField[Option[T]] =
new EntityField[Option[T]] {
override val keyField: KeyField[Option[T]] = new KeyField[Option[T]] {
override def setKey(b: Key.PathElement.Builder, key: Option[T]): Key.PathElement.Builder =
key match {
case None => b
case Some(k) => f.keyField.setKey(b, k)
}
}
override def from(v: Value)(cm: CaseMapper): Option[T] =
if (v == null) None else Some(f.from(v)(cm))
override def to(v: Option[T])(cm: CaseMapper): Value.Builder = v match {
case None => null
case Some(x) => f.to(x)(cm)
}
}