implicit def efIterable[T, C[_]]()

in datastore/src/main/scala/magnolify/datastore/EntityType.scala [282:309]


  implicit def efIterable[T, C[_]](implicit
    f: EntityField[T],
    kf: KeyField[C[T]],
    ti: C[T] => Iterable[T],
    fc: FactoryCompat[T, C[T]]
  ): EntityField[C[T]] =
    new EntityField[C[T]] {
      override val keyField: KeyField[C[T]] = kf
      override def from(v: Value)(cm: CaseMapper): C[T] = {
        val b = fc.newBuilder
        if (v != null) {
          b ++= v.getArrayValue.getValuesList.asScala.iterator.map(f.from(_)(cm))
        }
        b.result()
      }

      override def to(v: C[T])(cm: CaseMapper): Value.Builder =
        if (v.isEmpty) {
          null
        } else {
          Value
            .newBuilder()
            .setArrayValue(
              v.foldLeft(ArrayValue.newBuilder())((b, x) => b.addValues(f.to(x)(cm)))
                .build()
            )
        }
    }