override def injectInners()

in src/main/scala/com/spotify/scio/BigQueryTypeInjector.scala [134:172]


  override def injectInners(source: ScTypeDefinition): Seq[String] = {
    source.extendsBlock.members
      .collect {
        case c: ScClass if bqAnnotation(c).isDefined =>
          val (annotated, other) =
            generatedCaseClasses(source.getQualifiedName.init, c).partition(
              _.contains(HasAnnotationSuper)
            )
          (c, (annotated.headOption, other))
      }
      .collect { case (c, (Some(annotated), other)) =>
        val tupledMethod = getTupledMethod(c.getName, annotated)
        val applyPropsSignature =
          getApplyPropsSignature(annotated).mkString(",")
        val unapplyReturnTypes =
          getUnapplyReturnTypes(annotated).mkString(",")

        val extraCompanionMethod =
          fetchExtraBQTypeCompanionMethods(source, c)

        // TODO: missing extends and traits - are they needed?
        // $tn extends ${p(c, SType)}.HasSchema[$name] with ..$traits
        val companion =
          s"""|object ${c.getName} {
                |  def apply( $applyPropsSignature ): ${c.getName} = ???
                |  def unapply(x$$0: ${c.getName}): _root_.scala.Option[($unapplyReturnTypes)] = ???
                |  def fromTableRow: _root_.scala.Function1[_root_.com.google.api.services.bigquery.model.TableRow, ${c.getName} ] = ???
                |  def toTableRow: _root_.scala.Function1[ ${c.getName}, _root_.com.google.api.services.bigquery.model.TableRow] = ???
                |  def schema: _root_.com.google.api.services.bigquery.model.TableSchema = ???
                |  def toPrettyString(indent: Int = 0): String = ???
                |  $extraCompanionMethod
                |  $tupledMethod
                |}""".stripMargin

        // for some reason we need to remove supers if any
        companion +: other.map(s => s.substring(0, s.lastIndexOf(')') + 1))
      }
      .flatten
  }