implicit def apply[T: TableRowField]: TableRowType[T] = TableRowType()

in bigquery/src/main/scala/magnolify/bigquery/TableRowType.scala [47:66]


  implicit def apply[T: TableRowField]: TableRowType[T] = TableRowType(CaseMapper.identity)

  def apply[T](cm: CaseMapper)(implicit f: TableRowField[T]): TableRowType[T] = {
    f match {
      case r: TableRowField.Record[_] =>
        r.fieldSchema(cm) // fail fast on bad annotations
        new TableRowType[T] {
          private val caseMapper: CaseMapper = cm
          @transient override lazy val schema: TableSchema =
            new TableSchema().setFields(r.fieldSchema(caseMapper).getFields)

          override val selectedFields: Seq[String] = r.fields(cm)
          override val description: String = r.fieldSchema(caseMapper).getDescription
          override def from(v: TableRow): T = r.from(v)(caseMapper)
          override def to(v: T): TableRow = r.to(v)(caseMapper)
        }
      case _ =>
        throw new IllegalArgumentException(s"TableRowType can only be created from Record. Got $f")
    }
  }