All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalikejdbc.OneToManies20SQL.scala Maven / Gradle / Ivy

There is a newer version: 4.3.2
Show newest version
/*
 * Copyright 2013 - 2015 scalikejdbc.org
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package scalikejdbc

import scala.collection.mutable.LinkedHashMap
import scala.collection.compat._

private[scalikejdbc] trait OneToManies20Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z]
    extends SQL[Z, E]
    with RelationalSQLResultSetOperations[Z] {

  private[scalikejdbc] def extractOne: WrappedResultSet => A
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1]
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2]
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3]
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4]
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5]
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6]
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7]
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8]
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9]
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10]
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11]
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12]
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13]
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14]
  private[scalikejdbc] def extractTo15: WrappedResultSet => Option[B15]
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16]
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17]
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18]
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19]
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20]
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z

  private[scalikejdbc] def processResultSet(result: (LinkedHashMap[A, (scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20])]),
    rs: WrappedResultSet): LinkedHashMap[A, (scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20])] = {
    val o = extractOne(rs)
    val (to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20) = (extractTo1(rs), extractTo2(rs), extractTo3(rs), extractTo4(rs), extractTo5(rs), extractTo6(rs), extractTo7(rs), extractTo8(rs), extractTo9(rs), extractTo10(rs), extractTo11(rs), extractTo12(rs), extractTo13(rs), extractTo14(rs), extractTo15(rs), extractTo16(rs), extractTo17(rs), extractTo18(rs), extractTo19(rs), extractTo20(rs))
    if (result.contains(o)) {
      (to1 orElse to2 orElse to3 orElse to4 orElse to5 orElse to6 orElse to7 orElse to8 orElse to9 orElse to10 orElse to11 orElse to12 orElse to13 orElse to14 orElse to15 orElse to16 orElse to17 orElse to18 orElse to19 orElse to20).map { _ =>
        val (ts1, ts2, ts3, ts4, ts5, ts6, ts7, ts8, ts9, ts10, ts11, ts12, ts13, ts14, ts15, ts16, ts17, ts18, ts19, ts20) = result.apply(o)
        result += (o -> ((
          to1.map(t => if (ts1.contains(t)) ts1 else ts1 :+ t).getOrElse(ts1),
          to2.map(t => if (ts2.contains(t)) ts2 else ts2 :+ t).getOrElse(ts2),
          to3.map(t => if (ts3.contains(t)) ts3 else ts3 :+ t).getOrElse(ts3),
          to4.map(t => if (ts4.contains(t)) ts4 else ts4 :+ t).getOrElse(ts4),
          to5.map(t => if (ts5.contains(t)) ts5 else ts5 :+ t).getOrElse(ts5),
          to6.map(t => if (ts6.contains(t)) ts6 else ts6 :+ t).getOrElse(ts6),
          to7.map(t => if (ts7.contains(t)) ts7 else ts7 :+ t).getOrElse(ts7),
          to8.map(t => if (ts8.contains(t)) ts8 else ts8 :+ t).getOrElse(ts8),
          to9.map(t => if (ts9.contains(t)) ts9 else ts9 :+ t).getOrElse(ts9),
          to10.map(t => if (ts10.contains(t)) ts10 else ts10 :+ t).getOrElse(ts10),
          to11.map(t => if (ts11.contains(t)) ts11 else ts11 :+ t).getOrElse(ts11),
          to12.map(t => if (ts12.contains(t)) ts12 else ts12 :+ t).getOrElse(ts12),
          to13.map(t => if (ts13.contains(t)) ts13 else ts13 :+ t).getOrElse(ts13),
          to14.map(t => if (ts14.contains(t)) ts14 else ts14 :+ t).getOrElse(ts14),
          to15.map(t => if (ts15.contains(t)) ts15 else ts15 :+ t).getOrElse(ts15),
          to16.map(t => if (ts16.contains(t)) ts16 else ts16 :+ t).getOrElse(ts16),
          to17.map(t => if (ts17.contains(t)) ts17 else ts17 :+ t).getOrElse(ts17),
          to18.map(t => if (ts18.contains(t)) ts18 else ts18 :+ t).getOrElse(ts18),
          to19.map(t => if (ts19.contains(t)) ts19 else ts19 :+ t).getOrElse(ts19),
          to20.map(t => if (ts20.contains(t)) ts20 else ts20 :+ t).getOrElse(ts20)
        )))
      }.getOrElse(result)
    } else {
      result += (
        o -> ((
          to1.map(t => Vector(t)).getOrElse(Vector.empty),
          to2.map(t => Vector(t)).getOrElse(Vector.empty),
          to3.map(t => Vector(t)).getOrElse(Vector.empty),
          to4.map(t => Vector(t)).getOrElse(Vector.empty),
          to5.map(t => Vector(t)).getOrElse(Vector.empty),
          to6.map(t => Vector(t)).getOrElse(Vector.empty),
          to7.map(t => Vector(t)).getOrElse(Vector.empty),
          to8.map(t => Vector(t)).getOrElse(Vector.empty),
          to9.map(t => Vector(t)).getOrElse(Vector.empty),
          to10.map(t => Vector(t)).getOrElse(Vector.empty),
          to11.map(t => Vector(t)).getOrElse(Vector.empty),
          to12.map(t => Vector(t)).getOrElse(Vector.empty),
          to13.map(t => Vector(t)).getOrElse(Vector.empty),
          to14.map(t => Vector(t)).getOrElse(Vector.empty),
          to15.map(t => Vector(t)).getOrElse(Vector.empty),
          to16.map(t => Vector(t)).getOrElse(Vector.empty),
          to17.map(t => Vector(t)).getOrElse(Vector.empty),
          to18.map(t => Vector(t)).getOrElse(Vector.empty),
          to19.map(t => Vector(t)).getOrElse(Vector.empty),
          to20.map(t => Vector(t)).getOrElse(Vector.empty)
        ))
      )
    }
  }

  private[scalikejdbc] def toIterable(session: DBSession, sql: String, params: scala.collection.Seq[?], zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z): Iterable[Z] = {
    val attributesSwitcher = createDBSessionAttributesSwitcher
    DBSessionWrapper(session, attributesSwitcher).foldLeft(statement, rawParameters.toSeq*)(LinkedHashMap[A, (scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20])]())(processResultSet).map {
      case (one, (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20)) => zExtractor(one, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20)
    }
  }

}

class OneToManies20SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toManies(RS => Option[B1]...)) is specified, use #map((A,B) =>Z) instead."))
    with AllOutputDecisionsUnsupported[Z, E] {

  def map(zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z): OneToManies20SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, HasExtractor, Z] = {
    val q: OneToManies20SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, HasExtractor, Z] = new OneToManies20SQL(statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toIterable: OneToManies20SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = {
    val q: OneToManies20SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] =new OneToManies20SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toList: OneToManies20SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = {
    val q: OneToManies20SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = new OneToManies20SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toOption: OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = {
    val q: OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = new OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20)(zExtractor)(true)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def headOption: OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = {
    val q: OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = new OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20)(zExtractor)(false)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }
  override def toCollection: OneToManies20SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = {
    val q: OneToManies20SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = new OneToManies20SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z](statement, rawParameters)(one)(to1, to2, to3, to4, to5, to6, to7, to8, to9, to10, to11, to12, to13, to14, to15, to16, to17, to18, to19, to20)(zExtractor)
    q.queryTimeout(queryTimeout)
    q.fetchSize(fetchSize)
    q.tags(tags.toSeq*)
    q
  }

  override def single: OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = toOption
  override def first: OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = headOption
  override def list: OneToManies20SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = toList
  override def iterable: OneToManies20SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = toIterable
  override def collection: OneToManies20SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] = toCollection
}

object OneToManies20SQL {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](sqlObject: OneToManies20SQL[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20), sqlObject.zExtractor))
  }
}

class OneToManies20SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toManies(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToList[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies20Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor): List[Z] = {
    executeQuery[List](session, (session: DBSession) => toIterable(session, statement, rawParameters, zExtractor).toList)
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z = zExtractor
}

object OneToManies20SQLToList {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](sqlObject: OneToManies20SQLToList[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20), sqlObject.zExtractor))
  }
}

final class OneToManies20SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z] private[scalikejdbc](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toManies(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToCollection[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies20Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply[C[_]]()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor, f: Factory[Z, C[Z]]): C[Z] = {
    executeQuery(session, (session: DBSession) => f.fromSpecific(toIterable(session, statement, rawParameters, zExtractor)))
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z = zExtractor
}

object OneToManies20SQLToCollection {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](sqlObject: OneToManies20SQLToCollection[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20), sqlObject.zExtractor))
  }
}

class OneToManies20SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toMany(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToIterable[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies20Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._

  override def apply()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor): Iterable[Z] = {
    executeQuery[Iterable](session, (session: DBSession) => toIterable(session, statement, rawParameters, zExtractor))
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z = zExtractor
}

object OneToManies20SQLToIterable {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](sqlObject: OneToManies20SQLToIterable[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20), sqlObject.zExtractor))
  }
}

class OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](
  override val statement: String,
  override val rawParameters: scala.collection.Seq[Any])(val one: WrappedResultSet => A)(val to1: WrappedResultSet => Option[B1], val to2: WrappedResultSet => Option[B2], val to3: WrappedResultSet => Option[B3], val to4: WrappedResultSet => Option[B4], val to5: WrappedResultSet => Option[B5], val to6: WrappedResultSet => Option[B6], val to7: WrappedResultSet => Option[B7], val to8: WrappedResultSet => Option[B8], val to9: WrappedResultSet => Option[B9], val to10: WrappedResultSet => Option[B10], val to11: WrappedResultSet => Option[B11], val to12: WrappedResultSet => Option[B12], val to13: WrappedResultSet => Option[B13], val to14: WrappedResultSet => Option[B14], val to15: WrappedResultSet => Option[B15], val to16: WrappedResultSet => Option[B16], val to17: WrappedResultSet => Option[B17], val to18: WrappedResultSet => Option[B18], val to19: WrappedResultSet => Option[B19], val to20: WrappedResultSet => Option[B20])(val zExtractor: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z)(val isSingle: Boolean = true)
    extends SQL[Z, E](statement, rawParameters)(SQL.noExtractor[Z]("one-to-many extractor(one(RS => A).toMany(RS => Option[B1])) is specified, use #map((A,B) =>Z) instead."))
    with SQLToOption[Z, E]
    with AllOutputDecisionsUnsupported[Z, E]
    with OneToManies20Extractor[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z] {

  import GeneralizedTypeConstraintsForWithExtractor._
  override def apply()(implicit session: DBSession, context: ConnectionPoolContext = NoConnectionPoolContext, hasExtractor: ThisSQL =:= SQLWithExtractor): Option[Z] = {
    executeQuery[Option](session, (session: DBSession) => toSingle(toIterable(session, statement, rawParameters, zExtractor)))
  }

  private[scalikejdbc] def extractOne: WrappedResultSet => A = one
  private[scalikejdbc] def extractTo1: WrappedResultSet => Option[B1] = to1
  private[scalikejdbc] def extractTo2: WrappedResultSet => Option[B2] = to2
  private[scalikejdbc] def extractTo3: WrappedResultSet => Option[B3] = to3
  private[scalikejdbc] def extractTo4: WrappedResultSet => Option[B4] = to4
  private[scalikejdbc] def extractTo5: WrappedResultSet => Option[B5] = to5
  private[scalikejdbc] def extractTo6: WrappedResultSet => Option[B6] = to6
  private[scalikejdbc] def extractTo7: WrappedResultSet => Option[B7] = to7
  private[scalikejdbc] def extractTo8: WrappedResultSet => Option[B8] = to8
  private[scalikejdbc] def extractTo9: WrappedResultSet => Option[B9] = to9
  private[scalikejdbc] def extractTo10: WrappedResultSet => Option[B10] = to10
  private[scalikejdbc] def extractTo11: WrappedResultSet => Option[B11] = to11
  private[scalikejdbc] def extractTo12: WrappedResultSet => Option[B12] = to12
  private[scalikejdbc] def extractTo13: WrappedResultSet => Option[B13] = to13
  private[scalikejdbc] def extractTo14: WrappedResultSet => Option[B14] = to14
  private[scalikejdbc] def extractTo15: WrappedResultSet => Option[B15] = to15
  private[scalikejdbc] def extractTo16: WrappedResultSet => Option[B16] = to16
  private[scalikejdbc] def extractTo17: WrappedResultSet => Option[B17] = to17
  private[scalikejdbc] def extractTo18: WrappedResultSet => Option[B18] = to18
  private[scalikejdbc] def extractTo19: WrappedResultSet => Option[B19] = to19
  private[scalikejdbc] def extractTo20: WrappedResultSet => Option[B20] = to20
  private[scalikejdbc] def transform: (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z = zExtractor
}

object OneToManies20SQLToOption {
  def unapply[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E <: WithExtractor, Z](sqlObject: OneToManies20SQLToOption[A, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15, B16, B17, B18, B19, B20, E, Z]): Some[(String, scala.collection.Seq[Any], WrappedResultSet => A, (WrappedResultSet => Option[B1], WrappedResultSet => Option[B2], WrappedResultSet => Option[B3], WrappedResultSet => Option[B4], WrappedResultSet => Option[B5], WrappedResultSet => Option[B6], WrappedResultSet => Option[B7], WrappedResultSet => Option[B8], WrappedResultSet => Option[B9], WrappedResultSet => Option[B10], WrappedResultSet => Option[B11], WrappedResultSet => Option[B12], WrappedResultSet => Option[B13], WrappedResultSet => Option[B14], WrappedResultSet => Option[B15], WrappedResultSet => Option[B16], WrappedResultSet => Option[B17], WrappedResultSet => Option[B18], WrappedResultSet => Option[B19], WrappedResultSet => Option[B20]), (A, scala.collection.Seq[B1], scala.collection.Seq[B2], scala.collection.Seq[B3], scala.collection.Seq[B4], scala.collection.Seq[B5], scala.collection.Seq[B6], scala.collection.Seq[B7], scala.collection.Seq[B8], scala.collection.Seq[B9], scala.collection.Seq[B10], scala.collection.Seq[B11], scala.collection.Seq[B12], scala.collection.Seq[B13], scala.collection.Seq[B14], scala.collection.Seq[B15], scala.collection.Seq[B16], scala.collection.Seq[B17], scala.collection.Seq[B18], scala.collection.Seq[B19], scala.collection.Seq[B20]) => Z, Boolean)] = {
    Some((sqlObject.statement, sqlObject.rawParameters, sqlObject.one, (sqlObject.to1, sqlObject.to2, sqlObject.to3, sqlObject.to4, sqlObject.to5, sqlObject.to6, sqlObject.to7, sqlObject.to8, sqlObject.to9, sqlObject.to10, sqlObject.to11, sqlObject.to12, sqlObject.to13, sqlObject.to14, sqlObject.to15, sqlObject.to16, sqlObject.to17, sqlObject.to18, sqlObject.to19, sqlObject.to20), sqlObject.zExtractor, sqlObject.isSingle))
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy